Provided by: manpages-fr-dev_4.19.0-7_all bug

NOM

       pthread_tryjoin_np,  pthread_timedjoin_np  -  Essayer  de  fusionner  avec un thread ayant
       terminé son exécution

BIBLIOTHÈQUE

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

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);

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 mesuré par rapport à l'horloge CLOCK_REALTIME. Si le délai expire
       avant  que  thread ne se termine, l'appel renvoie une erreur. Le paramètre abstime est une
       structure timespec(3) qui indique un temps absolu mesuré depuis l'époque POSIX  (consultez
       time(2))

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 :

       EINVAL La  valeur abstime n'est pas valable (tv_sec est inférieure à 0 ou tv_nsec est plus
              grande que 1e9).

       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é ajoutées dans la glibc 2.3.3.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │InterfaceAttributValeur  │
       ├────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │pthread_tryjoin_np(), pthread_timedjoin_np()            │ Sécurité des threads │ MT-Safe │
       └────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

       Ces fonctions sont des  extensions  GNU  non  standard ;  d'où  le  suffixe  « _np »  (non
       portable) dans leur nom.

BOGUES

       La  fonction  pthread_timedjoin_np() mesure le temps en calculant en interne un intervalle
       de sommeil relatif qui est alors mesuré par rapport à l'horloge CLOCK_MONOTONIC plutôt que
       par  rappport  à  l'horloge CLOCK_REALTIME. En conséquence, le délai n'est pas affecté par
       les modifications discontinues à l'horloge CLOCK_REALTIME.

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) {
               /* Gérer l'erreur */
           }

           ts.tv_sec += 5;

           s = pthread_timedjoin_np(thread, NULL, &ts);
           if (s != 0) {
               /* Gérer l'erreur */
           }

VOIR AUSSI

       clock_gettime(2), pthread_exit(3), pthread_join(3), timespec(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  <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>,   Frédéric   Hantrais
       <fhantrais@gmail.com> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

       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⟩.