NOM

pthread_join - Joindre un thread terminé

BIBLIOTHÈQUE

Bibliothèque de threads POSIX ( libpthread, -lpthread)

SYNOPSIS

#include <pthread.h>
int pthread_join(pthread_t thread, void **retval);

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 l'emplacement pointé par 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 fil d’exécution avec pour identifiant thread n'a pu être trouvé.

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes(7).
Interface Attribut Valeur
pthread_join() Sécurité des threads MT-Safe
 

STANDARDS

POSIX.1-2001, POSIX.1-2008.

NOTES

Après le succès d'un appel à pthread_join(), l'appelant est certain que le thread cible est achevé. L'appelant peut alors choisir de faire tout le nettoyage requis après l'achèvement du thread (par exemple, libérer la mémoire ou les autres ressources qui ont été allouées au thread cible).
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.

EXEMPLES

Consultez pthread_create(3).

VOIR AUSSI

pthread_cancel(3), pthread_create(3), pthread_detach(3), pthread_exit(3), pthread_tryjoin_np(3), pthreads(7)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <[email protected]>, Thierry Vignaud <[email protected]>, François Micaux, Alain Portal <[email protected]>, Jean-Philippe Guérard <[email protected]>, Jean-Luc Coulon (f5ibh) <[email protected]>, Julien Cristau <[email protected]>, Thomas Huriaux <[email protected]>, Nicolas François <[email protected]>, Florentin Duneau <[email protected]>, Simon Paillard <[email protected]>, Denis Barbier <[email protected]>, David Prévot <[email protected]> et Frédéric Hantrais <[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à [email protected]

Recommended readings

Pages related to pthread_join you should read also: