pthread_join的用法
时间: 2024-06-16 20:08:13 浏览: 18
pthread_join函数用于等待一个线程的结束,并获取该线程的返回值。其函数原型如下:
```c
int pthread_join(pthread_t thread, void **retval);
```
其中,`thread`参数是要等待的线程的标识符,`retval`参数是一个指向指针的指针,用于存储线程的返回值。
当调用pthread_join函数时,当前线程会被阻塞,直到指定的线程结束。如果线程已经结束,那么pthread_join会立即返回。当线程结束后,其返回值会被存储在`retval`指向的内存中。
需要注意的是,如果不关心线程的返回值,可以将`retval`参数设置为NULL。
以下是pthread_join函数的使用示例:
```c
#include <stdio.h>
#include <pthread.h>
void *thread_func(void *arg) {
int *num = (int *)arg;
printf("子线程执行,参数为:%d\n", *num);
*num = 100; // 修改参数值
pthread_exit((void *)num); // 返回参数地址
}
int main() {
pthread_t tid;
int num = 10;
pthread_create(&tid, NULL, thread_func, (void *)&num);
printf("主线程执行\n");
void *ret_val;
pthread_join(tid, &ret_val);
printf("子线程返回值:%d\n", *(int *)ret_val);
printf("修改后的参数值:%d\n", num);
return 0;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)