sub-rotina thread_post_many

Propósito

Posta uma ou mais threads de uma conclusão de evento.

Biblioteca

Biblioteca C padrão (libc.a)

Sintaxe

#include <sys/thread.h>

int thread_post_many( nthreads, tidp, erridp)
int nthreads;
tid_t * tidp;
tid_t * erridp;

Descrição

A subroutine thread_post_many posta uma ou mais threads da ocorrência do evento. O número de threads a serem postadas é especificado pelo valor do parâmetro nthreads , enquanto que o parâmetro tidp aponta para uma matriz de IDs IDs de threads que precisam ser postadas. O subroutine funciona exatamente como o subroutine thread_post mas pode ser usado para postar para várias threads ao mesmo tempo.

Um máximo de 512 threads pode ser postado em uma chamada para a subroutine thread_post_many .

Um endereço opcional para um campo ID de thread pode ser passado no parâmetro erridp . Esse campo normalmente é ignorado pelo kernel a menos que a subroutine falhe porque o processo de chamada não tem permissões para postar para qualquer uma das threads especificadas. Neste caso, o kernel posta todas as threads na matriz apontada pelo parâmetro tidp até o primeiro encadeamento com falha e preenche o parâmetro erridp com o ID do thread com falha.

Parâmetros

Item Descrição
nthreads Especifica o número de threads a serem postadas.
tidp Especifica o endereço de uma matriz de IDs de encadeamento correspondente à lista de threads a serem postadas.
erridp Ou NULL ou especifica o ponteiro para uma variável de ID de thread na qual o kernel retornará o ID da thread da primeira thread com falha quando um errno de EPERM for configurado.

Valores De Retorno

Na conclusão bem-sucedida, a subroutine thread_post_many retorna um valor de 0. Se não for bem-sucedido, um valor de -1 é retornado e a variável global errno é configurada para indicar o erro.

Códigos De Erro

A subroutine thread_post_many é malsucedida quando um dos seguintes é verdadeiro:
Item Descrição
ESRCH Nenhum dos threads indicados é existente ou eles todos exitou ou estão saindo.
EPERM O ID do usuário real ou efetivo não corresponde ao ID de usuário real ou efetivo de uma ou mais threads sendo postadas, ou então o processo de chamada não tem autoridade de usuário root.
EFAULT O parâmetro tidp aponta para um local fora do espaço de endereço do processo.
EINVAL Um valor negativo ou um valor maior que 512 foi especificado no parâmetro nthreads .