Provided by: manpages-fr-dev_4.13-4_all
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); Compiler et éditer les liens avec -pthreads.
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. The pthread_timedjoin_np() function performs a join-with-timeout. If thread has not yet terminated, then the call blocks until a maximum time, specified in abstime, measured against the CLOCK_REALTIME clock. If the timeout expires before thread terminates, the call returns an error. The abstime argument is a structure of the following form, specifying an absolute time measured since the Epoch (see 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() can in addition fail with the following errors: ETIMEDOUT Le délai a expiré avant que thread ne se soit terminé. EINVAL abstime value is invalid (tv_sec is less than 0 or tv_nsec is greater than 1e9). pthread_timedjoin_np() ne renvoie jamais d'erreur EINTR.
VERSIONS
Ces fonctions ont été introduites dans la glibc dans sa version 2.3.3.
ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter attributes(7). ┌───────────────────────┬──────────────────────┬─────────┐ │Interface │ Attribut │ Valeur │ ├───────────────────────┼──────────────────────┼─────────┤ │pthread_tryjoin_np(), │ Sécurité des threads │ MT-Safe │ │pthread_timedjoin_np() │ │ │ └───────────────────────┴──────────────────────┴─────────┘
CONFORMITÉ
Ces fonctions sont des extensions GNU non standard ; d'où le suffixe « _np » (non portable) dans leur nom.
EXEMPLES
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 */ }
BOGUES
The pthread_timedjoin_np() function measures time by internally calculating a relative sleep interval that is then measured against the CLOCK_MONOTONIC clock instead of the CLOCK_REALTIME clock. Consequently, the timeout is unaffected by discontinuous changes to the CLOCK_REALTIME clock.
VOIR AUSSI
clock_gettime(2), pthread_exit(3), pthread_join(3), pthreads(7)
COLOPHON
Cette page fait partie de la publication 5.10 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.
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 <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean- luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Frédéric Hantrais <fhantrais@gmail.com> Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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 à debian-l10n-french@lists.debian.org ⟨⟩.