The pthread_join() function suspends processing
of the calling thread until the target thread
completes. thread must be a member of the current
process and it cannot be a detached thread. See pthread_create(3THR).
If two or more threads wait for the same thread to complete, all will
suspend processing until the thread has terminated, and then one thread
will return successfully and the others will return with an error of ESRCH. The pthread_join() function will not
block processing of the calling thread if the target thread has already terminated.
If a pthread_join() call returns successfully with
a non-null status argument, the value passed
to pthread_exit(3THR) by the
terminating thread will be placed in the location referenced by status.
If the pthread_join() calling thread is cancelled,
then the target thread will remain joinable by pthread_join(). However, the calling thread may set up a cancellation
cleanup handler on thread prior to the join call,
which may detach the target thread by calling pthread_detach(3THR). See pthread_detach(3THR) and pthread_cancel(3THR).
|