C++ pthread_create 传值struct
时间: 2023-12-27 22:25:03 浏览: 103
在C++中,可以通过传递结构体(struct)来向pthread_create函数传递多个参数。下面是一个示例代码:
```cpp
#include <iostream>
#include <pthread.h>
#include <unistd.h>
using namespace std;
struct ThreadArgs {
int arg1;
char arg2;
};
void* thr_fn(void* arg) {
ThreadArgs* args = (ThreadArgs*)arg;
int i = args->arg1;
char c = args->arg2;
cout << "arg1: " << i << endl;
cout << "arg2: " << c << endl;
return ((void*)0);
}
int main() {
pthread_t tid;
ThreadArgs args;
args.arg1 = 2;
args.arg2 = 'a';
pthread_create(&tid, NULL, thr_fn, &args);
sleep(1);
return 0;
}
```
在这个例子中,我们定义了一个结构体ThreadArgs,它包含了两个成员变量arg1和arg2。在主函数中,我们创建了一个ThreadArgs对象args,并给arg1赋值为2,arg2赋值为'a'。然后,我们将args的地址传递给pthread_create函数的最后一个参数。在线程函数thr_fn中,我们将传递进来的参数转换为ThreadArgs指针,并通过指针访问arg1和arg2的值。
这样,我们就可以通过传递结构体来向pthread_create函数传递多个参数了。
阅读全文