4

我想实现类似于 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的类实例。

4

2 回答 2

4

-pthread当忘记在命令行中使用时,通常会由 GCC 产生此错误。

于 2011-12-25T19:49:19.033 回答
0

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

于 2011-12-26T08:44:42.260 回答