pthread_join - wait for termination of another thread
SYNOPSIS
#include <pthread.h>
int pthread_join(pthread_t th, void **thread_return);
DESCRIPTION
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.
CANCELLATION
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.
RETURN VALUE
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.
ERRORS
EINVAL The th thread has been detached.
th.
EDEADLK
The th argument refers to the calling thread.
AUTHOR
Xavier Leroy <Xavier.Leroy@inria.fr>
SEE ALSO
pthread_exit(3), pthread_detach(3), pthread_create(3),
pthread_attr_setdetachstate(3), pthread_cleanup_push(3),
pthread_key_create(3).