创建线程作为 class 数据成员

Creating a thread as a class data member

我正在尝试创建一个线程并将对它的引用保留为 class 的成员,并且该线程调用 class 的方法。这是代码:

EventQueue::EventQueue() {

    this->dispatcherThread = std::thread(&EventQueue::dispatchEvent, std::ref(*this));
    this->dispatcherThread.join();

}

我正在使用 QtCreator 进行构建。并得到这个错误:

/home/eventqueue.o:-1: In function std::thread::thread<void (EventQueue::*)(), std::reference_wrapper<EventQueue> >(void (EventQueue::*&&)(), std::reference_wrapper<EventQueue>&&)': /usr/include/c++/4.9/thread:136: error: undefined reference to pthread_create' :-1: error: collect2: error: ld returned 1 exit status

有什么问题?

我指的是这个 post: Storing an std::thread object as a class member

但是我总是遇到上述的编译错误

您需要 link 针对 pthread 库。

对于 GCC,我们使用 -pthread 选项执行此操作。

例如:g++ -pthread ...