zoukankan      html  css  js  c++  java
  • 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
            }
       
  • 相关阅读:
    open jdk
    llvm 编译
    llvm Array Bounds Check Elimination
    tmux 共享窗口大小
    llvm pass
    llvm code call graph
    llvm -O 经历过那些pass
    tcmalloc asan
    web ide
    eclipse配置
  • 原文地址:https://www.cnblogs.com/amwuau/p/10954471.html
Copyright © 2011-2022 走看看