C ++ Runnable класс - PullRequest
       22

C ++ Runnable класс

3 голосов
/ 25 декабря 2011

Я бы хотел добиться чего-то похожего на интерфейс Runnable из Java. Я пытаюсь сделать это таким образом:

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 Я загружаю экземпляр класса, производный от Runnable, из динамической библиотеки с помощью dlopen.

Ответы [ 2 ]

4 голосов
/ 25 декабря 2011

Эта ошибка обычно возникает в GCC, когда вы забыли использовать -pthread в командной строке.

0 голосов
/ 26 декабря 2011

Я вижу одну проблему с вашим кодом: вам не разрешено вызывать виртуальные функции из конструктора класса. Это приводит к неопределенному поведению.

...