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.
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.