cs24-23fa pthread_join

Introduction to Computing Systems (Fall 2023)


pthread_join - join with a terminated thread


#include <pthread.h>

int pthread_join(pthread_t thread, void **retval);


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).


#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