pthread_join ou pthread_detach Subroutine
Propósito
Bloqueia ou deteta o fio de chamada até que o encadeamento especificado seja finalizado.
Biblioteca
Biblioteca de encadeamentos (libpthreads.a)
Sintaxe
#include <pthread.h>
int pthread_join (thread, status)
pthread_t thread;
void **status;
int pthread_detach (thread)
pthread_t thread;Descrição
A subroutine pthread_join bloqueia a thread de chamada até que a thread thread seja terminada. O status de finalização da thread de destino é retornado no parâmetro status .
Se o fio de destino já estiver finalizado, mas ainda não descolado, a subroutine retornará imediatamente. É impossível aderir a um fio descolado, mesmo que ainda não esteja finalizado. O encadeamento de destino é descolado automaticamente após todos os threads unidos terem sido woken para cima.
Essa subroutina não faz por si só um fio a ser finalizado. Ele age como a subroutinha pthread_cond_wait para esperar por uma condição especial.
A subroutine pthread_detach é usada para indicar para a implementação que o armazenamento para a thread cujo ID de thread esteja no local thread pode ser reafirmado quando esse encadeamento terminar. Este armazenamento deve ser reafirmado na saída de processo, independentemente de o encadeamento ter sido descolado ou não, e pode incluir armazenamento para valor de retorno thread . Se thread ainda não tiver finalizado, pthread_detach não deve fazer com que ele finalize. Múltiplas chamadas pthread_detach sobre o mesmo encadeamento de destino causa um erro.
Parâmetros
| Item | Descrição |
|---|---|
| Encadeamento | Especifica o encadeamento de destino. |
| status | Pontos para onde o status de finalização do fio de destino será armazenado. Se o valor for NULL, o status de finalização não será retornado. |
Valores De Retorno
Se bem-sucedida, a função pthread_join retorna zero. Caso contrário, um número de erro é retornado para indicar o erro.
Códigos De Erro
As funções pthread_join e pthread_detach falharão se:
| Item | Descrição |
|---|---|
| EINVAL | A implementação detectou que o valor especificado por thread não se refere a um encadeamento articulável. |
| ESRCH | Nenhum fio poderia ser encontrado correspondente ao especificado pelo ID de thread fornecido. |
A função pthread_join falhará se:
| Item | Descrição |
|---|---|
| EDEADLK | O valor da thread especifica o encadeamento de chamada. |
A função pthread_join não retornará um código de erro de EINTR.