亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Qt之簡單的異步操作實現方法

 更新時間:2022年11月10日 15:20:05   作者:超級小清  
這篇文章主要介紹了Qt之簡單的異步操作實現方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Qt簡單的異步操作

在實際應用中,經常會遇到一些耗時操作,導致了主線程的阻塞,這時候可以使用異步操作來避免阻塞。

Qt的異步操作需要使用下面的庫

#include <QtConcurrent/QtConcurrent>

然后將耗時操作丟進下面的函數中即可。

QtConcurrent::run([=]()
? ? {
? ? ? ? func();
? ? });

如果需要判斷耗時操作執(zhí)行完畢與否,可以使用QFuture和QFutureWatcher的結合。QFuture 表示異步計算的結果,QFutureWatcher 則允許使用信號和槽監(jiān)視 QFuture。

代碼如下。

?? ?QFutureWatcher<void> *pwatcher = nullptr;
?? ?pwatcher = new QFutureWatcher<void>;

? ? //把掃描到的wifi信息輸出到指定文件
? ? QFuture<void> future = QtConcurrent::run([=]()
? ? {
? ? ? ? func(); //耗時操作
? ? });

? ? connect(pwatcher, &QFutureWatcher<void>::finished, this, [=]()
? ? {
? ? ? ? core(); //主線程操作
? ? });

? ? pwatcher->setFuture(future);

QtConccurent管理的線程實際是從線程池分配線程資源的,而綁定QFutureWatcher的槽是在主線程中執(zhí)行的。

在需要單次執(zhí)行且內部邏輯較簡單的時候使用QtConccurrent + QFuture + QFutureWatcher是很方便的,可以減少很多編碼工作量,而且在多cpu環(huán)境中,QtConccurent也會啟用多核。

Qt異步變同步問題

解決的問題

很多情況會出現多線程程序,再進行操作時候,其中一個線程的邏輯執(zhí)行需要另外一個線程的一個信號,那么異步變同步就變得無比重要

如何實現

使用:QEventLoop類

The QEventLoop class provides a means of entering and leaving an event loop.

QEventLoop類提供了一種進入和離開事件循環(huán)的方法。  

At any time, you can create a QEventLoop object and call exec() on it to start a local event loop. From within the event loop, calling exit() will force exec() to return.

在任何時候,您都可以創(chuàng)建一個QEventLoop對象并在其上調用exec()來啟動一個本地事件循環(huán)。 在事件循環(huán)中,調用exit()將強制返回exec()。  

代碼塊解析

? ? QEventLoop q;
? ? QTimer t;
? ? t.setSingleShot(false);
? ? connect(&t, &QTimer::timeout, this, [=](){
?? ??? ?//TODO SOMETHING
? ? });
?? ?connect(this, SIGNAL(connectStatusChangedSig()), &q, SLOT(quit())); ?//異步調用完成退出
? ? t.start(50);
? ? q.exec();

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • C語言詳細講解指針數組的用法

    C語言詳細講解指針數組的用法

    在C語言和C++等語言中,數組元素全為指針變量的數組稱為指針數組,指針數組中的元素都必須具有相同的存儲類型、指向相同數據類型的指針變量。指針數組比較適合用來指向若干個字符串,使字符串處理更加方便、靈活
    2022-05-05
  • C++ odr用法案例詳解

    C++ odr用法案例詳解

    這篇文章主要介紹了C++ odr用法案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-09-09
  • c語言數據結構之并查集 總結

    c語言數據結構之并查集 總結

    一種用于管理分組的數據結構。它具備兩個操作:(1)查詢元素a和元素b是否為同一組 (2) 將元素a和b合并為同一組,需要的朋友可以參考下
    2018-08-08
  • C語言實現24點游戲計算器的示例代碼

    C語言實現24點游戲計算器的示例代碼

    24點是一種益智游戲,24點是把4個整數(一般是正整數)通過加減乘除以及括號運算,使最后的計算結果是24的一個數學游戲,24點可以考驗人的智力和數學敏感性,它能在游戲中提高人們的心算能力。本文將用C語言實現這一游戲,感興趣的可以了解一下
    2022-08-08
  • C++ find函數及用法小結

    C++ find函數及用法小結

    string類的find()函數用于在字符串中查找字符或子串,返回第一個匹配的位置,C++中的find()函數有多種用法,本文通過實例代碼給大家詳細講解,感興趣的朋友一起看看吧
    2023-12-12
  • C/C++位段超詳細整理大全

    C/C++位段超詳細整理大全

    以位為單位來定義結構體中的成員變量所占的空間內存,含有位段的結構體稱為位段結構,這篇文章主要給大家介紹了關于C/C++位段的相關資料,需要的朋友可以參考下
    2024-01-01
  • 基于c++強制類型轉換的(總結)詳解

    基于c++強制類型轉換的(總結)詳解

    本篇文章對C++中的強制類型轉換進行了詳細的分析介紹。需要的朋友參考下
    2013-05-05
  • C語言 數據類型詳細介紹

    C語言 數據類型詳細介紹

    本文主要講解C語言 數據類型,這里整理了詳細的數據類型的資料,希望能幫助剛剛開始學習C語言的同學
    2016-08-08
  • C++代碼和可執(zhí)行程序在x86和arm上的區(qū)別介紹

    C++代碼和可執(zhí)行程序在x86和arm上的區(qū)別介紹

    這篇文章主要介紹了C++代碼和可執(zhí)行程序在x86和arm上的區(qū)別,X86和ARM是占據CPU市場的兩大處理器,各有優(yōu)劣,本文給大家詳細介紹了兩者的區(qū)別,需要的朋友可以參考下
    2022-07-07
  • C語言函數的基本使用和遞歸詳解

    C語言函數的基本使用和遞歸詳解

    一個函數在它的函數體內調用它自身稱為遞歸調用。這種函數稱為遞歸函數。C語言允許函數的遞歸調用。在遞歸調用中,主調函數又是被調函數。執(zhí)行遞歸函數將反復調用其自身,每調用一次就進入新的一層
    2021-09-09

最新評論