这是我的线程类的骨架:
class MyThread {
public:
virutal ~MyThread();
// will start thread with svc() as thread entry point
void start() = 0;
// derive class will specialize what the thread should do
virtual void svc() = 0;
};
Run Code Online (Sandbox Code Playgroud)
在代码的某处我创建了一个实例,MyThread后来我想要销毁它.在这种情况下MyThread~MyThread()被称为.MyThread:svc()仍在运行并使用对象的数据成员.因此MyThread:svc(),在继续使用析构函数之前,我需要礼貌地告知停止旋转.
破坏线程对象的可接受方法是什么?
注意:我正在寻找平台无关的解决方案.
UPD:很明显问题的根源在于C++对象代表线程和OS线程之间没有关系.所以问题是:在对象去除的上下文中,是否有一种可接受的方法可以使线程对象像普通的C++对象一样运行,或者它应该被视为一个不寻常的对象(例如,我们应该在调用它之前调用join()吗?