pthread_create()可以传多个参数吗
时间: 2023-06-28 07:13:40 浏览: 185
pthread_create()函数最多可以传递两个参数,第一个参数是指向线程标识符的指针,第二个参数是用来设置线程属性的指针。如果需要传递多个参数给线程函数,可以将这些参数封装到一个结构体中,然后将结构体的地址作为线程函数的参数传递给pthread_create()函数。在线程函数内部,可以通过指针访问结构体中的成员来获取参数。例如:
```
#include <pthread.h>
#include <stdio.h>
struct thread_data {
int arg1;
int arg2;
};
void *thread_func(void *arg) {
struct thread_data *data = (struct thread_data *) arg;
printf("arg1 = %d, arg2 = %d\n", data->arg1, data->arg2);
// 线程函数的逻辑
}
int main() {
pthread_t thread;
struct thread_data data = {1, 2};
pthread_create(&thread, NULL, thread_func, (void *) &data);
// 主线程的逻辑
pthread_join(thread, NULL);
return 0;
}
```
在上面的例子中,我们定义了一个结构体thread_data,它包含了线程函数需要的两个参数arg1和arg2。在主函数中,我们创建了一个thread_data的实例data,并且将它的地址传递给pthread_create()函数。在线程函数thread_func中,我们将arg转换为thread_data指针类型,然后通过指针访问结构体中的成员来获取参数。
阅读全文