【发布时间】:2012-01-31 13:39:31
【问题描述】:
我有线程(工作得很好)像这样在单音对象中调用方法:
bool bInvokeUpdate= QMetaObject::invokeMethod(ApiManager::getInstance(),
"updateMainWindowTree",
Qt::BlockingQueuedConnection,
Q_RETURN_ARG(bool, bReturnUpdate))
;
我使用 Qt::BlockingQueuedConnection 所以我可以根据 bool 值继续线程工作.. 任何方式 我的问题是这个调用是否保留在线程中?还是导致方法在主线程中执行?
当我在线程中调试应用程序时,我在调试器中看到我在线程 id xxxx 中 但是当我在 updateMainWindowTree 方法中设置断点时,我看到它跳转到主线程。 那么我不断从主线程调用函数是什么意思?如何避免?
【问题讨论】:
-
什么是 ApiManager,它驻留在哪里?
-
它的全局对象,提供 API 功能,与 GUI 或其他东西无关,但也从 GUI 线程调用
标签: c++ multithreading qt qthread