POSIX Threads for Windows – REFERENCE - Pthreads-w32

Reference Index

Table of Contents


pthread_join - wait for termination of another thread

pthread_timedjoin_np - wait for termination of another thread with a timeout

pthread_tryjoin_np – join another thread without waiting


#include <pthread.h>

int pthread_join(pthread_t th, void **thread_return);

int pthread_timedjoin_np(pthread_t th, void **thread_return, const struct timespec *abstime);

int pthread_tryjoin_np(pthread_t th, void **thread_return);


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.

pthread_timedjoin_np is identical to pthread_join except that it will return the error ETIMEDOUT if the target thread th has not exited before abstime passes. If abstime is NULL the function will wait forever and it's behaviour will therefore be identical to pthread_join.

pthread_tryjoin_np is identical to pthread_join except that it will return immediately with the error EBUSY if the target thread th has not exited.

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.


pthread_join, pthread_tryjoin_np and pthread_timedjoin_np are cancellation points. If a thread is cancelled while suspended in either function, the thread execution resumes immediately and the cancellation is executed without waiting for the th thread to terminate. If cancellation occurs during either function, the th thread remains not joined.

Return Value

On success, the return value of th is stored in the location pointed to by thread_return, and 0 is returned. On error, a non-zero error code is returned.


No thread could be found corresponding to that specified by th.
The th thread has been detached.
Another thread is already waiting on termination of th.
(pthread_timedjoin_np only): abstime passed before th could be joined.
The th argument refers to the calling thread.


Xavier Leroy <Xavier.Leroy@inria.fr>

Modified by Ross Johnson for use with Pthreads-w32.

See Also

pthread_exit(3) , pthread_detach(3) , pthread_create(3) , pthread_attr_setdetachstate(3) , pthread_cleanup_push(3) , pthread_key_create(3) .

Table of Contents