我正在使用boost::thread
和Qt。我不是从非gui线程创建任何Widget。这是我的代码。
int main(int argc, char *argv[]){
QApplication a(argc, argv);
MainWindow w;
w.show();
Monitor monitor;
Producer producer(&monitor);
Matrix matrix;
Consumer consumer(&monitor, &matrix);
boost::thread_group thread_group;
boost::thread& producer_thread = producer.start();
//boost::thread& consumer_thread = consumer.start();
//thread_group.add_thread(&producer_thread);
//thread_group.add_thread(&consumer_thread);
//thread_group.join_all();
return a.exec();
}
producer.start()
和consumer.start()
创建新主题。我得到运行时断言失败
ASSERT failure in QWidget: "Widgets must be created in the GUI thread.", file kernel\qwidget.cpp, line 1299
但是start()从不调用任何gui小部件。而且我还开发了任何GUI。
start()设置一个带有produce()
回调的线程。并返回该线程的ref