logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

pthread_tryjoin_np, pthread_timedjoin_np - try to join with a terminated thread

Attributes

       For an explanation of the terms used in this section, see attributes(7).
       ┌─────────────────────────────────────────────────────────────────────────────┬───────────────┬─────────┐
       │ InterfaceAttributeValue   │
       ├─────────────────────────────────────────────────────────────────────────────┼───────────────┼─────────┤
       │ pthread_tryjoin_np(), pthread_timedjoin_np()                                │ Thread safety │ MT-Safe │
       └─────────────────────────────────────────────────────────────────────────────┴───────────────┴─────────┘

Bugs

       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.

Description

       These  functions operate in the same way as pthread_join(3), except for the differences described on this
       page.

       The pthread_tryjoin_np() function performs a nonblocking join with the thread thread, returning the  exit
       status  of the thread in *retval.  If thread has not yet terminated, then instead of blocking, as is done
       by pthread_join(3), the call returns an error.

       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
       timespec(3) structure, specifying an absolute time measured since the Epoch (see time(2)).

Errors

       These functions can fail with the same errors as pthread_join(3).  pthread_tryjoin_np() can  in  addition
       fail with the following error:

       EBUSYthread had not yet terminated at the time of the call.

       pthread_timedjoin_np() can in addition fail with the following errors:

       EINVALabstime value is invalid (tv_sec is less than 0 or tv_nsec is greater than 1e9).

       ETIMEDOUT
              The call timed out before thread terminated.

       pthread_timedjoin_np() never returns the error EINTR.

Examples

       The following code waits to join for up to 5 seconds:

           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 */
           }

History

       glibc 2.3.3.

Library

       POSIX threads library (libpthread, -lpthread)

Name

       pthread_tryjoin_np, pthread_timedjoin_np - try to join with a terminated thread

Return Value

       On success, these functions return 0; on error, they return an error number.

See Also

clock_gettime(2), pthread_exit(3), pthread_join(3), timespec(3), pthreads(7)

Linux man-pages 6.9.1                              2024-05-02                              pthread_tryjoin_np(3)

Standards

       GNU; hence the suffix "_np" (nonportable) in the names.

Synopsis

#define_GNU_SOURCE             /* See feature_test_macros(7) */
       #include<pthread.h>intpthread_tryjoin_np(pthread_tthread,void**retval);intpthread_timedjoin_np(pthread_tthread,void**retval,conststructtimespec*abstime);

See Also