线程传递参数
时间: 2023-06-28 20:12:32 浏览: 41
在线程中传递参数可以通过以下几种方式:
1. 通过构造函数传递参数:在创建线程时,可以通过构造函数将参数传递进去,线程启动后就可以使用这些参数。例如:
```c++
#include <iostream>
#include <thread>
void thread_func(int param)
{
std::cout << "param = " << param << std::endl;
}
int main()
{
int param = 10;
std::thread t(thread_func, param);
t.join();
return 0;
}
```
2. 通过成员函数传递参数:与构造函数类似,可以通过成员函数将参数传递进去。例如:
```c++
#include <iostream>
#include <thread>
class ThreadClass
{
public:
void thread_func(int param)
{
std::cout << "param = " << param << std::endl;
}
};
int main()
{
int param = 10;
ThreadClass obj;
std::thread t(&ThreadClass::thread_func, &obj, param);
t.join();
return 0;
}
```
3. 通过lambda表达式传递参数:使用lambda表达式可以直接在创建线程时传递参数。例如:
```c++
#include <iostream>
#include <thread>
int main()
{
int param = 10;
std::thread t([param](){
std::cout << "param = " << param << std::endl;
});
t.join();
return 0;
}
```