January 30, 2003 PTHREAD_JOIN 3

### NAME

pthread_join - wait for thread termination

### LIBRARY

POSIX Thread Library (libpthread, -lpthread)

### SYNOPSIS

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

### DESCRIPTION

The pthread_join(``) function suspends execution of the calling thread until the target ```thread` terminates unless the target ```thread` has already terminated.

On return from a successful pthread_join(``) call with a non-NULL ```value_ptr` argument, the value passed to pthread_exit(``) by the terminating thread is stored in the location referenced by ```value_ptr`. When a pthread_join(``) returns successfully, the target thread has been terminated. The results of multiple simultaneous calls to pthread_join(``) specifying the same target thread are undefined. If the thread calling pthread_join(``) is cancelled, then the target thread is not detached.

A thread that has exited but remains unjoined counts against ```_POSIX_THREAD_THREADS_MAX`.

### RETURN VALUES

If successful, the pthread_join(``) function will return zero. Otherwise an error number will be returned to indicate the error.

### ERRORS

pthread_join(``) shall fail if:

[```EINVAL`]
  The value specified by ```thread` does not refer to a joinable thread.

[```ESRCH`]
  No thread could be found corresponding to that specified by the given thread ID, ```thread`.

pthread_join(``) may fail if:

[```EDEADLK`]
  A deadlock was detected or the value of ```thread` specifies the calling thread.

### SEE ALSO

wait(2), pthread_create(3)

### STANDARDS

pthread_join(``) conforms to ISO/IEC 9945-1:1996 (``POSIX.1'') .