QEventLoop配合QTimer实现阻塞任务超时处理
2024-09-05 22:34:08
A阻塞主线程正常运行,需要做特殊处理。
以下代码可实现,A阻塞或者正常处理时,均不阻塞主线程正常处理。
QEventLoop eventloop;
// use point to manage eventloop
QPointer<QEventLoop> blocker(&eventloop);
bool runOk = false;
// timeout 5000ms,exit
QTimer::singleShot(, &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
}
最新文章
- Front End Developer Questions 前端开发人员问题(一)
- 移动web之用CSS样式写如苹果手机的开关键
- Metro-Ural119递推
- BaseHttpListActivity,几行代码搞定Android Http列表请求、加载和缓存
- MVC3的安装方法(含安装包)
- html中input文本框,初始里边有文字提示,当点击时,文字消失,怎么设置?
- HDU1166-敌兵布阵(线段树)
- 如何保护你的linux操作系统
- pycurl,Python cURL library
- 【Linux&;amp;Unix--文件描述叙事的性格和权柄】
- Linux负载均衡软件LVS之三(配置篇)
- SQL语句流程函数
- UVALive - 4329 Ping pong 树状数组
- CF917D Stranger Trees
- Centos7初始配置
- poj-1459-最大流dinic+链式前向星-isap+bfs+stack
- js写的一个HashMap
- web.xml中Filter,Listener,Servlet的区别
- 配置阿里云ESC服务器部署项目
- Python fabs() 函数