我想从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的类实例。
答案 0 :(得分:4)
当忘记在命令行使用-pthread
时,GCC通常会出现此错误。
答案 1 :(得分:0)
我发现你的代码有一个问题:不允许你从类的构造函数中调用虚函数。这样做会产生不确定的行为。