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.
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:
| Safety: | |
|---|---|
| Cancellation point | Yes | 
| Signal handler | Yes | 
| Thread | Yes | 
