Provided by: manpages-fr-dev_4.21.0-2_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⟩.