1. NOM▲
pthread_tryjoin_np, pthread_timedjoin_np - Essayer de fusionner avec un thread ayant terminé son exécution
2. 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.
3. 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 */
}
;
4. VALEUR RENVOYÉE ▲
En cas de réussite, ces fonction renvoient 0 ; en cas d'erreur, elles renvoient un numéro d'erreur.
5. 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.
6. VERSIONS ▲
Ces fonctions ont été introduites dans la glibc dans sa version 2.3.3.
7. CONFORMITÉ ▲
Ces fonctions sont des extensions non standard GNU ; c'est la raison du suffixe « _np » (non portable) dans leur nom.
8. 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 */
}
9. VOIR AUSSI ▲
clock_gettime(2), pthread_exit(3), pthread_join(3), pthreads(7)
10. COLOPHON ▲
Cette page fait partie de la publication 3.52 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/.
11. 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 à <>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».