c语言pthread传参数
时间: 2023-09-11 21:10:32 浏览: 26
在C语言中,使用pthread库创建线程时可以通过传递参数的方式将参数传递给线程函数。可以使用结构体等数据类型将多个参数打包传递给线程函数。
以下是一个简单的示例代码,展示如何使用pthread_create()和pthread_join()函数传递参数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
// 线程参数结构体
typedef struct {
int num1;
int num2;
} thread_args;
// 线程函数
void *thread_func(void *arg) {
thread_args *args = (thread_args *) arg;
int sum = args->num1 + args->num2;
printf("Sum: %d\n", sum);
pthread_exit(NULL);
}
int main() {
pthread_t tid;
thread_args args;
args.num1 = 10;
args.num2 = 20;
pthread_create(&tid, NULL, thread_func, (void *) &args);
pthread_join(tid, NULL);
return 0;
}
```
在上面的示例中,我们创建了一个线程参数结构体,其中包含要传递的两个整数。我们在主函数中声明了该结构体,并将两个整数赋值为10和20。然后,我们使用pthread_create()函数创建一个新线程,并将线程参数结构体的地址作为参数传递给线程函数。
在线程函数中,我们将参数强制转换为线程参数结构体,并计算两个整数的和。最后,我们使用pthread_exit()函数退出线程。
在主函数中,我们使用pthread_join()函数等待线程结束。注意,我们将线程参数结构体的地址作为参数传递给线程函数,因此需要确保线程函数执行完毕后不再使用该结构体。
阅读全文