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

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

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

Qt簡單的異步操作

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

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

#include <QtConcurrent/QtConcurrent>

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

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

如果需要判斷耗時操作執(zhí)行完畢與否,可以使用QFuture和QFutureWatcher的結(jié)合。QFuture 表示異步計算的結(jié)果,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í)行且內(nèi)部邏輯較簡單的時候使用QtConccurrent + QFuture + QFutureWatcher是很方便的,可以減少很多編碼工作量,而且在多cpu環(huán)境中,QtConccurent也會啟用多核。

Qt異步變同步問題

解決的問題

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

如何實現(xiàn)

使用: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對象并在其上調(diào)用exec()來啟動一個本地事件循環(huán)。 在事件循環(huán)中,調(diào)用exit()將強制返回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();

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

相關(guān)文章

  • C++的原生數(shù)組你了解多少

    C++的原生數(shù)組你了解多少

    這篇文章主要為大家詳細介紹了C++的原生數(shù)組,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C/C++?Qt?StatusBar底部狀態(tài)欄應(yīng)用教程

    C/C++?Qt?StatusBar底部狀態(tài)欄應(yīng)用教程

    Qt窗體中默認會附加一個QstatusBar組件,狀態(tài)欄組件位于主窗體的最下方,其作用是提供一個工具提示功能。本文主要介紹了StatusBar底部狀態(tài)欄的應(yīng)用教程,需要的同學(xué)可以學(xué)習(xí)一下
    2021-12-12
  • c語言解析bmp圖片的實例

    c語言解析bmp圖片的實例

    下面小編就為大家?guī)硪黄猚語言解析bmp圖片的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • C語言?柔性數(shù)組的使用詳解

    C語言?柔性數(shù)組的使用詳解

    柔性數(shù)組(Flexible?Array)是引入的一個新特性,它允許你在定義結(jié)構(gòu)體時創(chuàng)建一個空數(shù)組,而這個數(shù)組的大小可以在程序運行的過程中根據(jù)你的需求進行更改特別注意的一點是:這個空數(shù)組必須聲明為結(jié)構(gòu)體的最后一個成員,并且還要求這樣的結(jié)構(gòu)體至少包含一個其他類型的成員
    2022-03-03
  • C語言數(shù)字圖像處理之直方圖均衡化

    C語言數(shù)字圖像處理之直方圖均衡化

    這篇文章主要為大家詳細介紹了C語言數(shù)字圖像處理之直方圖均衡化,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++ 編寫DLL文件給易語言調(diào)用方法

    C++ 編寫DLL文件給易語言調(diào)用方法

    在本文中我們給大家分享了C++ 編寫DLL文件給易語言調(diào)用的代碼和方法,需要的朋友們學(xué)習(xí)下。
    2019-01-01
  • C語言形參和實參的區(qū)別詳解

    C語言形參和實參的區(qū)別詳解

    在函數(shù)定義和調(diào)用過程中,形參和實參是非常重要的概念,本文主要介紹了C語言形參和實參的區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2023-05-05
  • C語言測試n的階乘和x的n次方

    C語言測試n的階乘和x的n次方

    今天小編就為大家分享一篇關(guān)于C語言測試n的階乘和x的n次方,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • C語言實現(xiàn)通訊錄功能

    C語言實現(xiàn)通訊錄功能

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)通訊錄功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 通過C++程序示例理解設(shè)計模式中的外觀模式

    通過C++程序示例理解設(shè)計模式中的外觀模式

    這篇文章主要介紹了通過設(shè)計模式中的外觀模式及相關(guān)的C++程序示例,外觀模式在高層提供了一個統(tǒng)一的接口實現(xiàn)一定程度上的解耦,需要的朋友可以參考下
    2016-03-03

最新評論