pthread_tryjoin_np(3)

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.

ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter attributes(7).
Interface | Attribut | Valeur
pthread_tryjoin_np(), pthread_timedjoin_np() | Sécurité des threads | MT-Safe

STANDARDS
GNU ; d'où le suffixe « _np » (non portable) dans leur nom.

HISTORIQUE
glibc 2.3.3.

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.