QEventLoop配合QTimer实现阻塞任务超时处理
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 }
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
作者:风来风往风伤
出处:http://www.cnblogs.com/amwuau/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。