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