pthread_join ou pthread_detach Subroutine

Objectif

Bloque ou déconnecte l'unité d'exécution appelante jusqu'à la fin de l'unité d'exécution spécifiée.

Bibliothèque

Bibliothèque d'unités d'exécution (libpthreads.a)

Syntaxe

#include <pthread.h>

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

int pthread_detach (thread)
pthread_t thread;

Descriptif

La sous-routine pthread_join bloque l'unité d'exécution appelante jusqu'à la fin de l'unité d'exécution thread . Le statut d'arrêt de l'unité d'exécution cible est renvoyé dans le paramètre status .

Si l'unité d'exécution cible est déjà arrêtée, mais pas encore déconnectée, la sous-routine est renvoyée immédiatement. Il est impossible de joindre une unité d'exécution détachée, même si elle n'est pas encore terminée. L'unité d'exécution cible est automatiquement déconnectée une fois que toutes les unités d'exécution jointes ont été réactivées.

Cette sous-routine ne provoque pas elle-même l'arrêt d'une unité d'exécution. Il agit comme la sous-routine pthread_cond_wait pour attendre une condition spéciale.

Remarque: Le fichier d'en-tête pthread.h doit être le premier fichier inclus de chaque fichier source utilisant la bibliothèque d'unités d'exécution. Sinon, l'indicateur de compilation -D_THREAD_SAFE doit être utilisé ou le compilateur cc_r doit être utilisé. Dans ce cas, l'indicateur est automatiquement défini.

La sous-routine pthread_detach est utilisée pour indiquer à l'implémentation que le stockage de l'unité d'exécution dont l'ID se trouve à l'emplacement thread peut être récupéré à la fin de cette unité d'exécution. Ce stockage doit être récupéré à l'exit de processus, que l'unité d'exécution ait été déconnectée ou non, et peut inclure du stockage pour la valeur de retour thread . Si l' unité d'exécution n'est pas encore arrêtée, pthread_detach ne provoque pas son arrêt. Plusieurs appels pthread_detach sur la même unité d'exécution cible provoquent une erreur.

Paramètres

Article Descriptif
unité d"exécution Indique l'unité d'exécution cible.
status Indique où le statut de fin de l'unité d'exécution cible sera stocké. Si la valeur est NULL, le statut de fin n'est pas renvoyé.

Valeurs renvoyées

Si l'opération aboutit, la fonction pthread_join renvoie zéro. Sinon, un numéro d'erreur est renvoyé pour indiquer l'erreur.

Codes d'erreur

Les fonctions pthread_join et pthread_detach échouent si:

Article Descriptif
EINVAL L'implémentation a détecté que la valeur spécifiée par l'unité d'exécution ne fait pas référence à une unité d'exécution joinable.
ESRCH Aucune unité d'exécution correspondant à celle spécifiée par l'ID d'unité d'exécution indiqué n'a été trouvée.

La fonction pthread_join échoue si:

Article Descriptif
EDEADLK La valeur de l'unité d'exécution indique l'unité d'exécution appelante.

La fonction pthread_join ne renvoie pas le code d'erreur EINTR.