int pthread_join(pthread_t thread, void **value)
阻塞当前线程,等待thread
结束。
pthread_t
的定义如下:
typedef unsigned long int pthread_t;
pthread_t thread
为线程ID
。
void **value
是void* (*start_routine)(void*)
的返回值的指针
,所以是个二级指针。
若成功,则返回0
。
若失败,则返回错误码
。
#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