pthread_join o pthread_detach Subroutine

Finalidad

Bloquea o desconecta la hebra de llamada hasta que termina la hebra especificada.

Biblioteca

Biblioteca de hebras (libpthreads.a)

Sintaxis

#include <pthread.h>

int pthread_join (thread, status)
pthread_t thread;
void **status;

int pthread_detach (thread)
pthread_t thread;

Descripción

La subrutina pthread_join bloquea la hebra de llamada hasta que la hebra thread termina. El estado de terminación de la hebra de destino se devuelve en el parámetro status .

Si la hebra de destino ya ha terminado, pero aún no se ha desconectado, la subrutina vuelve inmediatamente. Es imposible unir una hebra desconectada, incluso si todavía no se ha terminado. La hebra de destino se desconecta automáticamente después de que se hayan despertado todas las hebras unidas.

Esta subrutina no provoca por sí misma la terminación de una hebra. Actúa como la subrutina pthread_cond_wait para esperar una condición especial.

Nota: El archivo de cabecera pthread.h debe ser el primer archivo incluido de cada archivo de origen utilizando la biblioteca de hebras. De lo contrario, se debe utilizar el distintivo de compilación -D_THREAD_SAFE o el compilador cc_r utilizado. En este caso, el distintivo se establece automáticamente.

La subrutina pthread_detach se utiliza para indicar a la implementación que el almacenamiento de la hebra cuyo ID de hebra está en la ubicación thread puede reclamarse cuando dicha hebra termina. Este almacenamiento se reclamará al salir del proceso, independientemente de si la hebra se ha desconectado o no, y puede incluir almacenamiento para el valor de retorno thread . Si la hebra todavía no ha terminado, pthread_detach no hará que termine. Varias llamadas pthread_detach en la misma hebra de destino generan un error.

Parámetros

Elemento Descripción
hilo Especifica la hebra de destino.
estado Apunta a dónde se almacenará el estado de terminación de la hebra de destino. Si el valor es NULL, no se devuelve el estado de terminación.

Valores de retorno

Si es satisfactorio, la función pthread_join devuelve cero. De lo contrario, se devuelve un número de error para indicar el error.

Códigos de error

Las funciones pthread_join y pthread_detach fallarán si:

Elemento Descripción
EINVAL La implementación ha detectado que el valor especificado por la hebra no hace referencia a una hebra con posibilidad de unión.
ESRCH No se ha podido encontrar ninguna hebra correspondiente a la especificada por el ID de hebra especificado.

La función pthread_join fallará si:

Elemento Descripción
EDEADLK El valor de hebra especifica la hebra de llamada.

La función pthread_join no devolverá un código de error de EINTR.