有時候需要處理一些跟介面無關的但非常耗時的事情,這些事情跟介面在同乙個執行緒中,由於時間太長,導致介面無法響應,處於「假死」狀態。例如:在應用程式中儲存檔案到硬碟上,從開始儲存直到檔案儲存完畢,程式不響應使用者的任何操作,視窗也不會重新繪製,從而處於「無法響應」狀態,這是乙個非常糟糕的體驗 。
在這種情況下,有一種方法是使用多執行緒,即在子執行緒中處理檔案儲存,主線程負責介面相關。
**如下:
}} 這樣一來,程式就能響應了。
但是,該方法有乙個問題:可能正在儲存檔案的過程中,使用者不小心又單擊了儲存,或不小心關閉了程式主視窗,這樣會產生意想不到的後果。
解決這個問題的最簡單的辦法是替換成:
進一步的,如果想顯示乙個帶有進度條的對話方塊,隨時顯示當前的進度狀態,可以使用qprogressdialog。
for(int c = 0; c != colcount; ++c)
}} 顯示效果如下:
計算密集型 IO密集型 資料密集型
2 計算密集型任務雖然也可以用多工完成,但是任務越多,花在任務切換的時間就越多,cpu執行任務的效率就越低,所以,要最高效地利用cpu,計算密集型任務同時進行的數量應當等於cpu的核心數。3 計算密集型任務由於主要消耗cpu資源,因此,執行效率至關重要。python這樣的指令碼語言執行效率很低,完全...
CPU 密集型 計算密集型,IO密集型
1 cpu 密集型 計算密集型 計算密集型,顧名思義就是應用需要非常多的cpu計算資源,在多核cpu時代,我們要讓每乙個cpu核心都參與計算,將cpu的效能充分利用起來,這樣才算是沒有浪費伺服器配置,如果在非常好的伺服器配置上還執行著單執行緒程式那將是多麼重大的浪費。對於計算密集型的應用,完全是靠c...
cpu密集型 計算密集型 io密集型 簡介
cpu密集型 cpu bound cpu密集型也叫計算密集型,指的是系統的硬碟 記憶體效能相對cpu要好很多,此時,系統運作大部分的狀況是cpu loading 100 cpu要讀 寫i o 硬碟 記憶體 i o在很短的時間就可以完成,而cpu還有許多運算要處理,cpu loading很高。在多重程...