int pthread_join(pthread_t thread, void **value)
1.0、参考
1.1、此函数的作用

阻塞当前线程,等待thread结束。

1.2、参数说明

pthread_t的定义如下:

typedef unsigned long int pthread_t;

pthread_t thread线程ID

void **valuevoid* (*start_routine)(void*)的返回值的指针,所以是个二级指针。

1.3、返回值说明

若成功,则返回0

若失败,则返回错误码

1.4、使用示例
#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>

/* 线程要执行的函数 */
void* run(void *args) {
    printf("running start\n");

    int sum = 0;
    for(int i = 1; i <= 100; i++) {
        sum += i;
    }

    //这里必须分配堆内存,注释释放该指针
    int *p = (int*)calloc(1, sizeof(int));
    *p = sum;

    printf("running end\n");
    return p;
}

int main() {
    pthread_t threadId;
    int rc = pthread_create(&threadId, NULL, run, NULL);
    if (0 == rc) {
        printf("create thread success\n");
        int *p;
        pthread_join(threadId, (void**)&p);
        if (NULL != p) {
            printf("p = %d\n", *p);
            free(p);
        }
        return 0;
    } else {
        printf("create thread fail!\n");
        return 1;
    }
}

使用cc命令编译:

cc -lpthread -o test_pthread test.c