C++ 开启线程并携带参数
时间: 2023-09-17 08:11:56 浏览: 38
在C++中,开启线程并携带参数可以通过以下方式实现:
1. 定义一个函数,该函数将在新线程中执行,并且该函数的参数可以接收传入的参数。
2. 使用`std::thread`构造函数创建一个新的线程,并将该函数及其参数作为参数传递给构造函数。
3. 调用`std::thread`对象的`join`方法,等待新线程执行完毕。
示例代码如下:
```c++
#include <iostream>
#include <thread>
void thread_function(int x, double y)
{
std::cout << "Hello from thread! x = " << x << ", y = " << y << std::endl;
}
int main()
{
int x = 1;
double y = 2.0;
std::thread t(thread_function, x, y);
t.join();
std::cout << "Hello from main!" << std::endl;
return 0;
}
```
在上面的示例代码中,我们定义了一个名为`thread_function`的函数,该函数将在新线程中执行,并且接收两个参数`x`和`y`。然后我们使用`std::thread`构造函数创建一个新的线程,并将该函数及其参数作为参数传递给构造函数。最后,我们调用`join`方法等待新线程执行完毕。在主线程中,我们输出一条消息表示主线程也在执行。
需要注意的是,线程函数的参数如果需要传递多个参数,可以使用`std::bind`或者lambda表达式来实现。另外,线程函数执行完毕后,可以使用`std::thread`对象的`detach`方法将线程与对象分离,此时线程将在后台继续执行,但是无法再通过该对象控制线程的行为。