pthread_join()

Join thread

Synopsis:

#include <pthread.h>

int pthread_join( pthread_t thread,
                  void** value_ptr );

Arguments:

thread
The target thread whose termination you're waiting for.
value_ptr
NULL, or a pointer to a location where the function can store the value passed to pthread_exit() by the target thread.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The pthread_join() function blocks the calling thread until the target thread thread terminates, unless thread has already terminated. If value_ptr is non-NULL and pthread_join() returns successfully, then the value passed to pthread_exit() by the target thread is placed in *value_ptr. If the target thread has been canceled via pthread_cancel() then *value_ptr is set to PTHREAD_CANCELED.

Note: The non-POSIX pthread_timedjoin() function is similar to pthread_join(), except that an error is returned if the join doesn't occur before a given time.

The target thread must be joinable. Multiple pthread_join(), pthread_timedjoin(), ThreadJoin(), and ThreadJoin_r() calls on the same target thread aren't allowed. When pthread_join() returns successfully, the target thread has been terminated.

Returns:

EOK
Success.
EBUSY
The specified thread is already being joined by another thread.
EDEADLK
The calling thread is attempting to join itself.
EFAULT
A fault occurred when the kernel tried to access the buffers provided.
EINVAL
The specified thread isn't joinable because it's detached (see pthread_detach()).
ESRCH
The specified thread doesn't exist.
ETIMEDOUT
A kernel timeout unblocked the call. See TimerTimeout().

Classification:

POSIX 1003.1

Safety:  
Cancellation point Yes
Interrupt handler No
Signal handler Yes
Thread Yes