PTHREAD_JOIN(3)                                   PTHREAD_JOIN(3)

       pthread_join - wait for termination of another thread

       #include <pthread.h>

       int pthread_join(pthread_t th, void **thread_return);

       pthread_join  suspends the execution of the calling thread
       until the thread identified by th  terminates,  either  by
       calling pthread_exit(3) or by being cancelled.

       If  thread_return  is  not NULL, the return value of th is
       stored in the location pointed to by  thread_return.   The
       return  value  of  th  is  either  the argument it gave to
       pthread_exit(3), or PTHREAD_CANCELED if th was  cancelled.

       The  joined  thread  th  must be in the joinable state: it
       must not have been detached using pthread_detach(3) or the
       PTHREAD_CREATE_DETACHED attribute to pthread_create(3).

       When  a  joinable  thread terminates, its memory resources
       (thread descriptor and stack) are  not  deallocated  until
       another  thread  performs  pthread_join  on it. Therefore,
       pthread_join must be called once for each joinable  thread
       created to avoid memory leaks.

       At most one thread can wait for the termination of a given
       thread. Calling pthread_join  on  a  thread  th  on  which
       another  thread is already waiting for termination returns
       an error.

       pthread_join is a cancellation point. If a thread is  can-
       celed  while  suspended in pthread_join, the thread execu-
       tion resumes immediately and the cancellation is  executed
       without waiting for the th thread to terminate. If cancel-
       lation occurs during pthread_join, the th  thread  remains
       not joined.

       On  success, the return value of th is stored in the loca-
       tion pointed to by thread_return, and 0  is  returned.  On
       error, a non-zero error code is returned.

       ESRCH  No  thread  could  be  found  corresponding to that
              specified by th.

       EINVAL The th thread has been detached.

       EINVAL Another thread is already waiting on termination of

              The th argument refers to the calling thread.

       Xavier Leroy <>

       pthread_exit(3),   pthread_detach(3),   pthread_create(3),
       pthread_attr_setdetachstate(3),   pthread_cleanup_push(3),

                           LinuxThreads                         1