Name
pthread_join
- join with a terminated thread
Synopsis
1
2
3
#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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#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.