pthread_join()
suspend l'exécution du thread appelant jusqu'à ce que le thread identifié par
th
achève son exécution, soit en appelant
pthread_exit(3)
soit après avoir été annulé.
Si
thread_return
ne vaut pas
NULL,
la valeur renvoyée par
th
y sera enregistrée.
Cette valeur sera soit l'argument passé à
pthread_exit(3),
soit
PTHREAD_CANCELED
si le thread
th
a été annulé.
Le thread rejoint
th
doit être dans l'état joignable : il ne doit pas avoir été détaché par
pthread_detach(3)
ou par l'attribut
PTHREAD_CREATE_DETACHED
lors de sa création par
pthread_create(3).
Quand l'exécution d'un thread joignable s'achève, ses ressources mémoire
(descripteur de thread et pile) ne sont pas désallouées jusqu'à ce qu'un autre
thread le joigne en utilisant
pthread_join().
Aussi,
pthread_join()
doit être appelée une fois pour chaque thread joignable pour éviter des
fuites de mémoire.
Au plus un seul thread peut attendre la mort d'un thread donné. Appeler
pthread_join()
sur un thread
th
dont un autre thread attend déjà la fin renvoie une erreur.