1. 程式人生 > 其它 >Qt 執行緒專題

Qt 執行緒專題

先開個篇,在後續實踐中更新內容。

方式一:子類化Qthred

方式二:新建一個QObject,裡面放工作函式再moveToThread

方式三:QtConcurrent

關於方式三:

QtConcurrent是一個名稱空間而不是一個類,因此其中的所有函式都是名稱空間內的全域性函式。

QtConcurrent這是一個高階 API,構建於QThreadPool之上,它提供更高層次的函式介面(APIs),使所寫的程式,可根據計算機的CPU核數,自動調整執行的執行緒數量。通常用於處理大多數通用的平行計算模式。

方式一、二有一個共同的缺點:繁雜的引數傳遞過程,這兩個方法都需要將工作函式放在新建的類中,導致當前主執行緒中的各種屬性和全域性變數需要使用訊號槽傳遞到子執行緒。
QtConcurrent就可以不需要使用訊號槽來傳遞引數,直接在當前類裡面寫工作函式,工作函式可以直接使用當前類的全域性變數和屬性。

【實踐】

方式一、二參考我的git。MultithreadedCV · xixixing/讀書_OpenCV3和Qt5計算機視覺應用開發 - 碼雲 - 開源中國 (gitee.com)

方式三參考Qt最簡單的多執行緒方法QtConcurrent::run()_guo88455648的部落格-CSDN部落格_qtconcurrent

【參考部落格】

最詳細的Qt多執行緒的三種方法之一QThread_蘇克貝塔的部落格-CSDN部落格_qt非同步執行緒

最詳細的Qt多執行緒的三種方法之二QtRunnable::run()+QThreadPool_蘇克貝塔的部落格-CSDN部落格

最詳細的Qt多執行緒的三種方法之三QtConcurrent::run()+QThreadPool_蘇克貝塔的部落格-CSDN部落格_qtconcurrent::run

Qt併發模組Qt Concurrent的使用_Amnesia Greens的部落格-CSDN部落格_qtconcurrent