Name
pthread_join - join with a terminated thread
Synopsis
#include <pthread.h>
int pthread_join(pthread_t thread, void **retval);
Description
The pthread_join() function waits for the thread specified by thread to terminate. If that thread has already terminated, then pthread_join() returns immediately. The thread specified by thread must be joinable.
If retval is not NULL, then pthread_join() copies the exit status of the target thread (i.e., the value that the target thread supplied to pthread_exit(3)) into the location pointed to by retval. If the target thread was canceled, then PTHREAD_CANCELED is placed in the location pointed to by retval.
If multiple threads simultaneously try to join with the same thread, the results are undefined. If the thread calling pthread_join() is canceled, then the target thread will remain joinable (i.e., it will not be detached).
Example
#include <pthread.h>
void *child(void *arg) {
return NULL;
}
int main(int argc, char *argv[]) {
pthread_t p[10];
for (size_t i = 0; i < 10; i++) {
pthread_create(&p[i], NULL, child, NULL);
}
for (size_t i = 0; i < 10; i++) {
pthread_join(p[i], NULL);
}
return 0;
}
Return Value
On success, pthread_join() returns 0; on error, it returns an error number.