Qt簡單的非同步操作實現方法

2021-10-21 01:42:40 字數 985 閱讀 8283

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

qt的非同步操作需要使用下面的庫

#include

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

qtconcurrent::

run([=

]())

;

如果需要判斷耗時操作執行完畢與否,可以使用qfuture和qfuturewatcher的結合。qfuture 表示非同步計算的結果,qfuturewatcher 則允許使用訊號和槽監視 qfuture。

**如下。

qfuturewatcher<

void

>

*pwatcher =

nullptr

; pwatcher =

new qfuturewatcher<

void

>

;//把掃瞄到的wifi資訊輸出到指定檔案

qfuture<

void

> future = qtconcurrent::

run([=

]())

;connect

(pwatcher,

&qfuturewatcher<

void

>

::finished,

this,[

=]()

);pwatcher-

>

setfuture

(future)

;

qtconccurent管理的執行緒實際是從執行緒池分配執行緒資源的,而繫結qfuturewatcher的槽是在主線程中執行的。在需要單次執行且內部邏輯較簡單的時候使用qtconccurrent + qfuture + qfuturewatcher是很方便的,可以減少很多編碼工作量,而且在多cpu環境中,qtconccurent也會啟用多核。

檔案非同步操作的實現

非同步操作可以使我們的程式獲得更優的效能,特別是對大檔案進行處理時,這一點相信大家都知道。這裡我寫了乙個示例。希望能給大家乙個幫助。using system.io using system.threading public class form2 system.windows.forms.form ...

QT 簡單的I O操作

qt的控制台的輸出用qdebug包含標頭檔案 include c 形式 qdebug hello n c形式 qdebug hello n qt簡單的目錄操作 獲取絕對路徑my dir.absolutepath foreach是qt中對c 中增加的關鍵字,foreach variable,conta...

php實現非同步操作

1.問題 2.嘗試過的方法 ajax 提交資料到 php 然後php 通過fsockopen 的方式啟用另乙個php 來進行文件轉換。問題是使用者提交後頁面一直不能動,說明該程序處於被占用狀態。和用ajax提交然後等待處理完成的效果是一樣的,使用者體驗不好。url array parse url u...