NOM¶
pthread_join - Joindre un thread terminé
SYNOPSIS¶
#include <pthread.h>
int pthread_join(pthread_t thread, void **retval);
Compilez et effectuez l'édition des liens avec l'option
-pthread.
DESCRIPTION¶
La fonction
pthread_join() attend que le thread spécifié
par
thread se termine. Si ce thread s'est déjà
terminé,
pthread_join() revient tout de suite. Le thread
spécifié par
thread doit être joignable.
Si
retval n'est pas NULL,
pthread_join() copie la valeur de sortie
du thread cible (c'est-à-dire la valeur que le thread cible a fournie
à
pthread_exit(3)) dans l'emplacement pointé par
*retval. Si le thread cible est annulé,
PTHREAD_CANCELED
est placé dans
*retval.
Si plusieurs threads essaient simultanément de joindre le même
thread, le résultat est indéfini. Si le thread appelant
pthread_join() est annulé, le thread cible reste joignable
(c'est-à-dire qu'il ne sera pas détaché).
VALEUR RENVOYÉE¶
En cas de réussite,
pthread_join() renvoie 0 ; en cas
d'erreur, elle renvoie un numéro d'erreur.
ERREURS¶
- EDEADLK
- Un verrou perpétuel (deadlock) a été
détecté, par exemple deux threads essaient de se joindre
mutuellement ; ou bien thread est aussi le thread
appelant.
- EINVAL
- thread n'est pas un thread joignable.
- EINVAL
- Un autre thread attend déjà de joindre ce thread.
- ESRCH
- Aucun thread avec pour identifiant thread n'a pu être
trouvé.
POSIX.1-2001.
NOTES¶
Après un appel réussi à
pthread_join(), l'appelant
est sûr que le thread cible s'est terminé.
Joindre un thread qui avait préalablement été joint
résulte en un comportement indéfini.
Un échec à joindre un thread qui est joignable
(c'est-à-dire non détaché) produit un
« thread zombie ». Il faut l'éviter, car
chaque thread zombie consomme des ressources du système, et si trop de
threads zombies s'accumulent, il ne sera plus possible de créer de
nouveaux threads (ou de nouveaux processus).
Il n'existe pas d'analogue pthreads à
waitpid(-1, &status, 0) pour joindre tout thread non
terminé. Si vous pensez avoir besoin de cette fonctionnalité,
vous devez probablement repenser la conception de votre application.
Tous les threads dans un processus sont au même niveau : tout
thread peut joindre tout autre thread du processus.
EXEMPLE¶
Consultez
pthread_create(3).
VOIR AUSSI¶
pthread_cancel(3),
pthread_create(3),
pthread_detach(3),
pthread_exit(3),
pthread_tryjoin_np(3),
pthreads(7)
COLOPHON¶
Cette page fait partie de la publication 3.65 du projet
man-pages Linux.
Une description du projet et des instructions pour signaler des anomalies
peuvent être trouvées à l'adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Denis Barbier (2010).
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce
document en utilisant la commande «
man -L C
<section>
<page_de_man> ».