linuxC语言中 pthread_join的用法
时间: 2024-06-10 21:04:05 浏览: 161
pthread_join是一个用于等待一个指定的线程终止并获取其返回值的函数。它的原型如下:
```c
int pthread_join(pthread_t thread, void **retval);
```
其中,`thread`是要等待的线程的标识符,`retval`是一个指向指针的指针,用于接收线程的返回值。
当调用pthread_join时,当前线程会被阻塞,直到被等待的线程结束。被等待的线程通过调用`pthread_exit`函数或者返回语句来终止。在被等待的线程终止后,它的返回值会被存储在`retval`指向的位置。
如果不关心线程的返回值,可以将`retval`设置为NULL。
下面是一个示例代码,演示了pthread_join的用法:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *thread_func(void *arg) {
int *value = (int *)arg;
int result = *value * 2;
pthread_exit((void *)result);
}
int main() {
pthread_t tid;
int value = 10;
void *result;
if (pthread_create(&tid, NULL, thread_func, (void *)&value) != 0) {
fprintf(stderr, "Failed to create thread\n");
exit(EXIT_FAILURE);
}
if (pthread_join(tid, &result) != 0) {
fprintf(stderr, "Failed to join thread\n");
exit(EXIT_FAILURE);
}
printf("Thread returned: %d\n", (int)result);
return 0;
}
```
阅读全文