A阻塞主线程正常运行,需要做特殊处理。
以下代码可实现,A阻塞或者正常处理时,均不阻塞主线程正常处理。
QEventLoop eventloop; // use point to manage eventloop QPointer<QEventLoop> blocker(&eventloop); bool runOk = false; // timeout 5000ms,exit QTimer::singleShot(5000, &eventloop, &QEventLoop::quit); std::async([blocker, &runOk]() { // // async mehthon run your logic // do something // exit if (blocker) { blocker->quit(); runOk = true; } }); // running eventloop.exec(); // normal exit do something if (runOk) { // do something } else { // timeout do something }