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 |