c++ 创建线程时怎么传多个参数,希望能给一个例子
时间: 2024-09-15 19:03:31 浏览: 44
在C++中,创建线程时如果需要传递多个参数给线程函数,可以通过将参数打包成一个结构体或者使用std::tuple的方式,然后在创建线程时通过std::bind或者lambda表达式来传递这个结构体或者tuple。以下是一个使用lambda表达式传递多个参数给线程函数的例子:
```cpp
#include <iostream>
#include <thread>
// 线程函数,接收两个int参数
void threadFunction(int a, int b) {
std::cout << "线程函数中参数 a: " << a << ", b: " << b << std::endl;
}
int main() {
int param1 = 10;
int param2 = 20;
// 使用lambda表达式捕获外部的变量,并将它们作为参数传递给线程函数
auto lambda = [param1, param2]() {
threadFunction(param1, param2);
};
// 创建并启动线程
std::thread t(lambda);
// 等待线程结束
t.join();
return 0;
}
```
在这个例子中,我们定义了一个名为`threadFunction`的线程函数,它接收两个`int`类型的参数。在`main`函数中,我们创建了两个整数变量`param1`和`param2`,然后使用一个lambda表达式来捕获这两个变量。在lambda表达式中,我们调用了`threadFunction`并传入了捕获的变量作为参数。最后,我们创建了一个线程`t`并传递了这个lambda表达式给它。
阅读全文