執行緒優先順序

2021-04-01 10:58:49 字數 2035 閱讀 5245

優先順序是執行緒排程的重要依據。優先順序高的執行緒,永遠先獲得cpu的青睞。當然啦,作業系統會視情況調整各個執行緒的優先順序。例如前台執行緒的優先順序應該調高一些,後台執行緒的優先順序應該調低一些。

執行緒的優先順序範圍從0(最低)到31(最高)。當你產生執行緒時,並不是直接以數值指定其優先順序,而是採用兩個步驟。第乙個步驟是指定「優先順序等級(priority class)」給程序,第二步驟是指定「相對優先順序」給該程序所擁有的執行緒。表1是對優先順序等級的描述,其中的**在createprocess的dwcreationflags引數中指定。如果你不指定,系統預設給的是normal_priority_class,除非父程序是idle_priority_class(那麼子程序也會是idle_priority_class)。等級

**

優 先 級 值

idle

idle_priority_class

4normal

normal_priority_class

9(前台)或7(後台)

high

high_priority_class

13realtime

realtime_priority_class

24表1win32 執行緒的優先順序等級劃分

■ 「idle」等級只有在cpu時間將被浪費掉時(也就是idle time)才執行。該等級最適合於系統監視軟體,或螢幕保護軟體。

■ 「normal」是預設等級。系統可以動態改變優先順序,但只限於「normal」等級。當進行變成前台,執行緒優先順序提公升為9,當程序變成後台時,優先順序降低為7。

■ 「high」等級是為了滿足立即反應的需要,例如使用者按下ctrl + esc時立刻把工作管理器(task manager)帶出場。

■ 「realtime」等級幾乎不會被一般的應用程式使用。就連系統中控制滑鼠、鍵盤、驅動器狀態重新掃瞄、ctrl + alt + del等的執行緒都比「realtime」的優先順序還低。這種等使用在「如果不在某個時間範圍內被執行的話,資料就要遺失」的情況。這個等級一定得在正確評估之下使用,如果你把這樣的等級指定給一般的(並不會常常阻塞的)執行緒,多工環境恐怕會癱瘓,因為這個執行緒有如此高的優先順序,其它執行緒再沒有機會被執行。

上述四種等級,每乙個等級又對映到某一範圍的優先順序值,idle_最低,normal_次之,high_又次之,realtime_最高。在每乙個等級之中,你可以使用setthreadpriority設定精確的優先順序,並且可以稍高或稍低於該等級的正常值(範圍是兩個點數)。你可以把setthreadpriority想象成一種微調操作。

setthreadpriority

的 參 數

微 調 幅 度

thread_priority_lowest

- 2thread_priority_below_normal

- 1thread_priority_normal

不變thread_priority_above_normal

+ 1thread_priority_highest

+ 2除了以上五種微調,另外還可以指定兩種微調常數:

setthreadpriority

引數面對任何等級的調整結果

面對「realtime」等級的調整結果

thread_priority_idle116

thread_priority_time_critical

1531

這些情況可以以表2作為總結。

優先順序等級

idle

lowest

below normal

normal

above normal

highest

time critical

idle12

3456

15normal

(後台)15

6789

15normal

(前台)17

89

1011

15high111

1213

1415

15realtime

1622

2324

2526

31表 2win32 執行緒優先順序

執行緒優先順序

執行緒優先順序由執行緒所屬程序的優先順序類 執行緒自身的相對優先級別共同確定,二者組合值作為執行緒的基優先順序。base priority level win32系統中,執行緒基優先順序的範圍從最低優先順序0到最高優先順序31。系統優先順序程式優先順序類別 執行緒優先順序等級 1idle prior...

執行緒優先順序

知識點 執行緒優先順序 獲取當前執行緒控制代碼 執行緒優先順序設定 執行緒優先順序變動 執行緒優先順序獲取 一 執行緒優先順序 thread priority 簡單的說就是 執行緒 的優先順序越高,那麼就可以分佔相對多的cpu時間片。每個程序都有相應的優先順序,優先順序決定它何時執行和占用 cpu ...

執行緒優先順序

優先順序 執行緒的優先順序將該執行緒的重要性傳給排程器,儘管cpu處理執行緒的順序不確定,但好似cpu排程器會更傾向於讓優先權最高的執行緒先執行,優先順序低的執行緒僅僅是執行頻率較低,不會導致死鎖。public class liftoff implements runnable public voi...