std::make_shared<std::thread> 如何给线程添加参数?
时间: 2024-11-09 20:21:27 浏览: 22
`std::make_shared<std::thread>` 是C++11引入的一种创建`std::shared_ptr`指向`std::thread`的便捷方式,它允许你在初始化时就指定线程要执行的函数和参数。下面是一个示例:
```cpp
#include <iostream>
#include <thread>
#include <memory>
// 定义一个线程执行的函数,接受一个int参数
void threadFunction(int arg) {
std::cout << "Thread started with argument: " << arg << std::endl;
}
int main() {
// 使用std::make_shared创建一个共享指针,并传入线程函数和参数
auto threadHandle = std::make_shared<std::thread>(threadFunction, 123); // 注意这里的逗号分隔函数名和参数
// 启动线程
threadHandle->start();
// 等待线程结束(这一步不是必需的,但这里为了展示)
threadHandle->join();
return 0;
}
```
在这个例子中,`std::make_shared<std::thread>(threadFunction, 123)`会创建一个新的线程,该线程将执行`threadFunction`并传递参数123。当`threadHandle->start()`调用时,线程开始执行。
阅读全文