某个类的方法中使用 std::thread 调用同一个类里的函数时怎么写
时间: 2024-11-25 17:11:42 浏览: 6
C++11中std::packaged_task的使用详解
在C++中,如果你想在一个类的方法里创建并使用`std::thread`来异步地调用该类内的其他函数,你可以按照以下步骤编写:
```cpp
#include <iostream>
#include <thread>
class MyClass {
public:
// 函数A是你想要异步调用的目标函数
void functionA() {
// 函数体...
}
// 使用std::thread启动异步任务
void asyncTask() {
// 创建一个新的线程,并传入functionA的指针作为目标函数
std::thread workerThread(functionA);
// 线程开始执行
workerThread.start();
// 如果你需要做些其他事情,可以在此处等待线程完成
// workerThread.join(); // 如果你想阻塞主线程直到任务结束
// 或者,你也可以直接返回,让主线程继续运行
// 注意,join不是必需的,如果不需要阻塞,workerThread会自动结束
}
};
int main() {
MyClass obj;
obj.asyncTask();
// 这时候main函数会立即返回,functionA会在另一个线程中执行
return 0;
}
阅读全文