NOM¶
pthread_tryjoin_np, pthread_timedjoin_np - Essayer de fusionner avec un thread
ayant terminé son exécution
SYNOPSIS¶
#define _GNU_SOURCE /* Consultez feature_test_macros(7) */
#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.
DESCRIPTION¶
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 l'époque (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 thread ne 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.
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_exit(3),
pthread_join(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/>.
Nicolas François et l'équipe francophone de traduction de
Debian (2006-2009).
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> ».