C ++ Runnable类

时间:2011-12-25 19:47:47

标签: c++ multithreading c++11 dlopen

我想从Java接口Runnable实现类似的功能。我试着这样做:

class Runnable{
    public:
        void start(){
            t = std::thread(&Runnable::run, this);
        }
    protected:
        virtual void run(){
        }
};

想法很简单。我想重载run方法然后start()应该启动重载方法。但是......它不起作用。

terminate called after throwing an instance of 'std::system_error'
  what():  Operation not permitted

PS我使用dlopen从动态库加载一个派生自Runnable的类实例。

2 个答案:

答案 0 :(得分:4)

当忘记在命令行使用-pthread时,GCC通常会出现此错误。

答案 1 :(得分:0)

我发现你的代码有一个问题:不允许你从类的构造函数中调用虚函数。这样做会产生不确定的行为。