在 C++ 中,使用 std::thread 函数来创建一个线程,怎么给thread传递 对象
时间: 2023-08-16 14:13:38 浏览: 117
在 C++ 中,可以使用 std::thread 函数来创建一个线程,并且可以通过传递对象的方式来给线程传递参数。具体的步骤如下:
1. 首先,需要定义一个函数或者函数对象,作为线程的入口点。这个函数或者函数对象将会在新线程中执行。
2. 接下来,创建一个对象,用于保存需要传递给线程的参数。
3. 使用 std::thread 构造函数创建一个线程,并将前面定义的函数或者函数对象以及参数对象作为参数传递进去。
4. 调用线程对象的 join() 函数,等待线程执行完成。
下面是一个示例代码,演示了如何给 std::thread 传递对象:
```cpp
#include <iostream>
#include <thread>
// 定义一个函数对象作为线程的入口点
void threadFunc(int val) {
std::cout << "Thread started with value: " << val << std::endl;
// 线程的逻辑代码
// ...
}
int main() {
int value = 42;
// 创建一个线程,并传递参数对象 value
std::thread myThread(threadFunc, value);
// 等待线程执行完成
myThread.join();
return 0;
}
```
在上述示例中,我们定义了一个函数 `threadFunc`,它接受一个 `int` 类型的参数 `val`。然后,在 `main` 函数中,我们创建了一个整型变量 `value` 并初始化为 42。接着,使用 `std::thread` 构造函数创建了一个线程 `myThread`,并将 `threadFunc` 和 `value` 作为参数传递进去。最后,调用 `join` 函数等待线程执行完成。
这样,就成功地给线程传递了一个对象作为参数。你可以根据实际需求修改示例代码中的线程入口点函数和参数类型。
阅读全文