相关疑难解决方法(0)

一种破坏"线程"类的方法

这是我的线程类的骨架:

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()吗?

c++ multithreading

3
推荐指数
1
解决办法
3155
查看次数

标签 统计

c++ ×1

multithreading ×1