创建线程作为 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 ...
我正在尝试创建一个线程并将对它的引用保留为 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 ...