std::thread(std::bind) 传参
时间: 2024-09-21 12:09:28 浏览: 45
C++11中std::packaged_task的使用详解
`std::thread` 是 C++ 标准库中的线程处理类,而 `std::bind` 是将函数及其参数绑定到一个可调用对象的过程。当你想要在一个新线程中运行某个函数,并传递特定参数时,可以使用 `std::bind`。
`std::thread(target, args...)` 的基本用法是创建一个新的线程来执行 `target` 函数。如果你想要给这个函数传递参数,你可以这样做:
```cpp
#include <iostream>
#include <thread>
// 定义一个接受两个int参数的函数
void myFunction(int a, int b) {
std::cout << "a = " << a << ", b = " << b << std::endl;
}
int main() {
// 使用 std::bind 绑定函数和参数
std::thread workerThread(std::bind(myFunction, 42, 7)); // 第一个参数是要执行的函数,后面的参数是你希望提供的
// 等待线程完成
workerThread.join();
return 0;
}
```
在这个例子中,`workerThread` 将会执行 `myFunction(42, 7)`。`std::bind` 把函数和参数打包成一个独立的对象,然后线程实际上是在执行这个包装后的对象。
阅读全文