Qt的執行緒池QThreadPool

2021-10-12 20:10:04 字數 413 閱讀 4734

執行緒可以幫助我們處理耗時的操作以防止介面卡死,也可以提高程式的併發性。但執行緒也不是建立越多越好,因為建立、銷毀執行緒以及切換執行緒都是需要消耗資源的。執行緒池技術的出現就是為了解決這個問題。執行緒池維護一定數量的執行緒,並充分使用它們。qt封裝的執行緒池類是qthreadpool,它的使用需要qrunnable來配合。概括一下使用步驟如下:

1.從qrunnable派生乙個類,重寫run()函式。把需要子執行緒幹的活放到run函式中。

2.呼叫qthreadpool的start()開始工作,start的引數就是子類化qrunnable的指標。

使用步驟很簡單,寫個例子。

1.用qtcreator新建乙個基於qwidget的工程。

2.新建乙個類ctask,從qrunnable繼承。並重寫run函式。

QT 執行緒池

在程式邏輯中經常會碰到需要處理大批量任務的情況,比如密集的網路請求,或者日誌分析等等。一般會建立乙個佇列,用乙個或者多個執行緒去消費這個佇列,一般也要處理佇列的加鎖和解鎖的問題,除非在設計時就能夠做到專列專用,否則鎖是不可避免的。而且在入隊和出隊的操作上肯定還是要加鎖,因為他們是在不同執行緒對同乙個...

pyqt5執行緒使用例項QThreadPool

順序 qwidget qthread 主線程,主要使用者管理執行緒 qobject 建立執行緒在這裡建立qthreadpool執行緒設定 qrunnable 主要執行緒邏輯 例項 效果圖 源 wx 18550030945 coding utf 8 import sys 這裡執行核心 class th...

qt執行緒,執行緒池用到的一點問題

總結一下最近使用qt多執行緒和執行緒池遇到的一些問題。1.qthreadpool 執行緒池的作用是什麼呢?把多個執行緒丟個乙個執行緒池中,讓他對目前的執行緒進行管理。比如最大執行的執行緒數,以及最大執行緒數外的執行緒就處於等待狀態等。要放到執行緒池中的執行緒必須繼承自qrunable類,這個類有個缺...