欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Qt之簡單的異步操作實(shí)現(xiàn)方法

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

Qt簡單的異步操作

在實(shí)際應(yīng)用中,經(jīng)常會(huì)遇到一些耗時(shí)操作,導(dǎo)致了主線程的阻塞,這時(shí)候可以使用異步操作來避免阻塞。

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

#include <QtConcurrent/QtConcurrent>

然后將耗時(shí)操作丟進(jìn)下面的函數(shù)中即可。

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

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

代碼如下。

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

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

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

? ? pwatcher->setFuture(future);

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

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

Qt異步變同步問題

解決的問題

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

如何實(shí)現(xiàn)

使用:QEventLoop類

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

QEventLoop類提供了一種進(jìn)入和離開事件循環(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.

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

代碼塊解析

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言詳細(xì)講解指針數(shù)組的用法

    C語言詳細(xì)講解指針數(shù)組的用法

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

    C++ odr用法案例詳解

    這篇文章主要介紹了C++ odr用法案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • c語言數(shù)據(jù)結(jié)構(gòu)之并查集 總結(jié)

    c語言數(shù)據(jù)結(jié)構(gòu)之并查集 總結(jié)

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

    C語言實(shí)現(xiàn)24點(diǎn)游戲計(jì)算器的示例代碼

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

    C++ find函數(shù)及用法小結(jié)

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

    C/C++位段超詳細(xì)整理大全

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

    基于c++強(qiáng)制類型轉(zhuǎn)換的(總結(jié))詳解

    本篇文章對C++中的強(qiáng)制類型轉(zhuǎn)換進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下
    2013-05-05
  • C語言 數(shù)據(jù)類型詳細(xì)介紹

    C語言 數(shù)據(jù)類型詳細(xì)介紹

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

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

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

    C語言函數(shù)的基本使用和遞歸詳解

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

最新評論