C++的std::thread可以作为类的属性,并且可以执行类中的线程函数吗?
时间: 2024-09-19 16:06:28 浏览: 48
c++11中关于std::thread的join的详解
是的,在C++中,`std::thread`确实可以作为一个类的成员变量,用于表示线程对象。你可以创建一个线程并让它执行类中的成员函数。这是通过将成员函数的指针或者成员函数的引用作为`std::thread`构造函数的参数来实现的。例如:
```cpp
class MyClass {
public:
void myThreadFunction() {
// 这里是线程要执行的代码
}
private:
std::thread myThread; // 将myThread作为类的属性
public:
void startThread() {
myThread = std::thread(&MyClass::myThreadFunction, this); // 传递指向成员函数的this指针
myThread.join(); // 等待线程结束
}
};
```
在这个例子中,当你调用`startThread()`方法时,新线程会开始执行`myThreadFunction()`。注意,为了在非静态成员函数上运行线程,你需要提供`this`指针以便访问类的数据。
阅读全文