pthread_create传递多个参数的方法
时间: 2023-06-30 20:26:53 浏览: 160
linux+linux多线程
可以通过定义一个结构体来包含需要传递的多个参数,然后将该结构体的指针作为参数传递给pthread_create函数。示例代码如下:
```
#include <pthread.h>
#include <stdio.h>
struct thread_data {
int arg1;
char arg2;
float arg3;
};
void *thread_function(void *arg) {
struct thread_data *my_data;
my_data = (struct thread_data *) arg;
printf("arg1 = %d, arg2 = %c, arg3 = %f\n", my_data->arg1, my_data->arg2, my_data->arg3);
pthread_exit(NULL);
}
int main() {
pthread_t my_thread;
struct thread_data data;
data.arg1 = 10;
data.arg2 = 'a';
data.arg3 = 3.14;
int ret = pthread_create(&my_thread, NULL, thread_function, (void *)&data);
if(ret != 0) {
printf("Error: pthread_create failed\n");
return -1;
}
pthread_join(my_thread, NULL);
return 0;
}
```
在上述示例中,定义了一个结构体thread_data,包含需要传递的三个参数arg1、arg2和arg3。在主函数中创建了一个thread_data类型的变量data,并且给其三个成员赋值。然后将data的地址作为参数传递给pthread_create函数。在线程函数thread_function中,通过强制类型转换将参数转换为thread_data类型,然后访问其三个成员,最后退出线程。主函数中使用pthread_join等待线程结束。
阅读全文