win32中優先權的概念,用來決定下乙個獲得cpu時間的執行緒是誰,較高優先權的執行緒必然獲得較多的cpu時間。關於優先權的完整討論其實相當複雜,你可以無分軒輊地給予每乙個執行緒相同的優先權,這可能會使你承擔不少麻煩,你也可以明智地使用優先權,使自己能夠調整程式的執行次序。例如你可以設定你的gui執行緒有較高優先權,使它對於使用者的反應能夠比較平順一些,或者你可以改變worker執行緒的優先權,使它們只在系統的閒置時間(idle time ) 裡工作。
win32優先權是以數值表現的,並以程序的「優先權類別(priority class)」,執行緒的「優先權層次(priority class)」,執行緒的「優先權等級(priority level)」和作業系統當時採用
優先權類別( priority class)
「優先權類別」是程序的屬性之一。這個屬性可以表現出這一程序和其他程序比較之下的重要性。win32提供四種優先權類別,每乙個類別對應乙個基本的優先權層級。
如下**展示了四個優先權類別。
優先權類別(priority class)
基礎優先權值(base priority)
high_priority_class
13idle_priority_class
4normal_priority_class
7 or 8(有些資料上寫7 or 9)
realtime_priority_class24
大部分程式使用normal_priority_class。少數情況下才會考慮使用其他類別。例如,task manager就是使用high_priority_class,所以即使其他程式處於非常忙碌的狀態下,它也總是能夠有所反應。
如果程式使用idle_priority_class,它就只會在cpu絕對空閒的時候才執行。
最後乙個類別是realtime_priority_class。這個類別用以協助解決一些和時間有密切關係的工作。舉個例子,如果有個程式必須反應乙個裝置驅動程式的行為,而該驅動程式用來實時監控(real-time monitoring)真實世界中的一台儀器,那麼將該程序設為這個優先權類別,就可以使它甚至優於核心程序和裝置驅動程式,這個優先權類別不應該用於標準gui程式或甚至於典型的伺服器程式。
優先權類別適用於程序而非執行緒。你可以利用setpriorityclass()和getpriorityclass()來調整和驗證其值。
Win32多執行緒 程序優先權與執行緒優先順序
1.優先權類別 priority class 優先權類別 是程序的屬性之一。這個屬性可以表現出這一程序和其他程序比較之下的重要性。win32 提供四種優先權類別,每乙個類別對應乙個基本的優先權層級。下表展示了四個優先權類別。優先權類別 priority classes 基礎優先權值 base pri...
Win32多執行緒之概述
win32多執行緒之概述 多執行緒在剛開始工作時也沒怎麼用,只是有時介面卡住了 一拖動程式主介面介面就會出現白色區域,久久不能消失,慢慢的明白主介面使用主線程,在單一執行緒通道中,乙個任務沒有完成,當前的所有工 作都將被鎖定,拖動介面會產生wm paint訊息,由於主線程被鎖定那麼這個訊息將不被程式...
WIN32多執行緒
win32多執行緒學習 1.執行緒建立 handle createthread lpsecurity attributes lpthreadattributes,dword dwstacksize,lpthread start routine lpstartaddress,lpvoid lppara...