NOM
pthread_tryjoin_np, pthread_timedjoin_np - Essayer de fusionner avec un
thread ayant terminé son exécution
SYNOPSIS
#define _GNU_SOURCE
#include <pthread.h>
int pthread_tryjoin_np(pthread_t thread, void **retval);
int pthread_timedjoin_np(pthread_t thread, void **retval,
const struct timespec *abstime);
Compilez et effectuez l’édition des liens avec l’option -pthread.
Ces fonctions opèrent de la même façon que pthread_join(3), à
l’exception des différences décrites dans cette page.
La fonction pthread_tryjoin_np() essaie de fusionner avec le thread
thread si cela est possible sans attendre et renvoie le code de retour
du thread dans *retval. Si le thread ne s’est toujours pas terminé,
alors au lieu d’être bloquée (comme le fait pthread_join(3)), l’appel
renvoie une erreur.
La fonction pthread_timedjoin_np() essaie de fusionner avec un thread
avec une limite de temps. Si le thread ne s’est toujours pas terminé,
alors l’appel est bloqué pendant un temps maximum de abstime. Si le
délai expire avant que thread ne se termine, l’appel renvoie une
erreur. Le paramètre abstime est une structure de la forme suivante,
qui indique un temps absolu mesuré depuis le 1er janvier 1970
(« Epoch », consultez time(2)) :
struct timespec {
time_t tv_sec; /* Secondes */
long tv_nsec; /* Nanosecondes */
};
VALEUR RENVOYÉE
En cas de réussite, ces fonction renvoient 0 ; en cas d’erreur, elles
renvoient un numéro d’erreur.
ERREURS
Ces fonction peuvent échouer avec les mêmes erreurs que
pthread_join(3). pthread_tryjoin_np() peut de plus échouer avec
l’erreur suivante :
EBUSY L’exécution du thread n’était pas terminée au moment de l’appel.
pthread_timedjoin_np() peut également échouer avec les erreurs
suivantes:
ETIMEDOUT
Le délai a expiré avant que le fil d’exécution se soit terminé.
pthread_timedjoin_np() ne renvoie jamais d’erreur EINTR.
VERSIONS
Ces fonctions ont été introduites dans la glibc dans sa version 2.3.3.
CONFORMITÉ
Ces fonctions sont des extensions non standard GNU ; c’est la raison du
suffixe « _np » (non portable) dans leur nom.
EXEMPLE
Le code suivant attend la fin d’exécution d’un thread pour fusionner
pendant au plus 5 seconde :
struct timespec ts;
int s;
...
if (clock_gettime(CLOCK_REALTIME, &ts) == -1) {
/* Handle error */
}
ts.tv_sec += 5;
s = pthread_timedjoin_np(thread, NULL, &ts);
if (s != 0) {
/* Handle error */
}
VOIR AUSSI
clock_gettime(2), pthread_join(3), pthread_exit(3), pthreads(7)
COLOPHON
Cette page fait partie de la publication 3.23 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
Cette page de manuel a été traduite et est maintenue par Nicolas
François <nicolas.francois@centraliens.net> et l’équipe francophone de
traduction de Debian.
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> ».