std::thread 引用一个类中的函数
时间: 2024-08-12 07:07:34 浏览: 79
C++11 并发指南之std::thread 详解
`std::thread`是C++标准库中用于线程处理的类,它允许你在新线程中执行一段代码。引用一个类中的函数作为线程的目标(即线程执行的内容)通常涉及以下步骤:
1. **定义目标函数**:首先,你需要在一个类中定义一个成员函数,这个函数是你想要在线程中运行的。例如:
```cpp
class MyClass {
public:
void myFunction() {
// 函数体
}
};
```
2. **创建线程**:然后,在另一个函数中,你可以使用`std::thread`来启动一个新的线程,并传递一个指向类中成员函数的指针或函数对象:
```cpp
MyClass myInstance;
std::thread myThread(&MyClass::myFunction, &myInstance); // 使用成员函数指针
// 或者使用std::bind
std::thread myThread(std::bind(&MyClass::myFunction, std::ref(myInstance)));
```
这里的`&MyClass::myFunction`获取的是`myFunction`的函数地址,而`std::ref(myInstance)`创建了一个可修改的引用,以便在函数中访问`myInstance`。
3. **启动和等待**:调用`start()`方法来启动线程,如果希望主线程等待线程结束,可以使用`join()`方法:
```cpp
myThread.start();
// 如果希望主线程等待myThread完成
myThread.join();
```
阅读全文