p_thread create创建的线程如何回收
时间: 2023-11-17 13:06:03 浏览: 66
p_thread create创建的线程可以通过pthread_join函数进行回收。pthread_join函数的作用是等待一个线程结束,并且获取线程的返回值。函数原型如下:
```c
int pthread_join(pthread_t thread, void **retval);
```
其中,thread参数是要等待的线程ID,retval参数是指向线程返回值的指针。如果线程没有返回值,retval可以传NULL。如果线程已经结束,pthread_join会立即返回;否则,调用线程会被阻塞,直到被等待的线程结束为止。线程结束后,pthread_join会返回0,并且将线程的返回值存储在retval指向的内存中。
示例代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *thread_func(void *arg) {
int *p = (int *)arg;
int sum = 0;
for (int i = 1; i <= *p; i++) {
sum += i;
}
int *result = (int *)malloc(sizeof(int));
*result = sum;
return (void *)result;
}
int main() {
pthread_t tid;
int n = 100;
pthread_create(&tid, NULL, thread_func, (void *)&n);
void *ret_val;
pthread_join(tid, &ret_val);
int *result = (int *)ret_val;
printf("1+2+...+%d=%d\n", n, *result);
free(result);
return 0;
}
```
阅读全文