C ++中方法类的线程处理程序

时间:2016-08-26 11:59:49

标签: c++ multithreading

我读到以下post以实现线程处理程序以在线程中传递方法类。

我想从文章中描述的那个创建一个通用的线程处理程序。 所以我所做的只是虚拟化方法MainThread(),然后在继承虚拟类ThreadHandler的类中实现它(就像在python中一样,你必须定义一个run()方法,当你调用Start()时执行)

class MyClass{
public:
  MyClass() : the_thread() {}
  ~MyClass(){}
  void Start(){
    the_thread = std::thread(&MyClass::ThreadMain,this);
  }
  virtual void ThreadMain() = 0 ; 
private:
  std::thread the_thread;

};

谢谢! :D

当我运行以下代码时:

class A : public MyClass {
private: ...
public:
 void Run(void) {
   std::cout << "Hi" ;
 };
int main() {
 A().Start()
 }

但它不起作用:在执行时它告诉我已经调用了一个纯虚方法。

我正在考虑使用类似的模板解决方案:

class ThreadHandler {
private:
std::thread the_thread ;
T* object ;
public:
void Start() {
        the_thread = std::thread(&T::Run, *object);
};
ThreadHandler(void) : the_thread() {};
~ThreadHandler(void) {};
};

一个想法?

0 个答案:

没有答案