cs24-22fa pthread_join

Introduction to Computing Systems (Fall 2022)

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.

See Also

pthread_create()