惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
L
LangChain Blog
爱范儿
爱范儿
博客园_首页
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
博客园 - 三生石上(FineUI控件)
大猫的无限游戏
大猫的无限游戏
宝玉的分享
宝玉的分享
GbyAI
GbyAI
H
Help Net Security
A
About on SuperTechFans
Recent Announcements
Recent Announcements
Hugging Face - Blog
Hugging Face - Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
雷峰网
雷峰网
D
Docker
博客园 - Franky
有赞技术团队
有赞技术团队
G
Google Developers Blog

博客园 - 风来风往风伤(TiAmo)

CPU监控工具 桌面日历软件 no matching host key type found. Their offer: ssh-rsa报错信息具体方法 Spring_AOP 原理 增强类型 js漂浮代码 ThoughtWorks(中国)程序员读书雷达 Java实现文件的RSA和DES加密算法 二维码 编码原理简介 Maven+eclipse+svn项目构建 QtCreator中使用CMake+Ninja加速编译 error C1088: 无法刷新编译器中间文件 error C1041: 无法打开程序数据库“xxx\vc140.pdb”;如果要将多个 CL.EXE 写入同一个 .PDB 文件 - 风来风往风伤(TiAmo) Navicat key MICROSOFT SQL SERVER 2012 序列号 IT外包概要 RuntimeError: You called this URL via POST, but the URL doesn’t end in a slash and you have APPEND_SLASH set. 判断django中的orm为空 sql调优的总结 2019Python学习路线图
QEventLoop配合QTimer实现阻塞任务超时处理
风来风往风伤(TiAmo) · 2019-05-31 · via 博客园 - 风来风往风伤(TiAmo)

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
        }