警惕執行緒的優先順序

2022-02-12 00:53:56 字數 900 閱讀 5401

執行緒在c#中有5個優先順序:highest、abovenormal、normal、belownormal和lowest。講到執行緒的優先順序,就 會涉及執行緒的排程。windows系統是乙個基於優先順序的搶占式排程系統。在系統中,如果有乙個執行緒的優先順序較高,並且它正好處在就緒狀態,系統總是會優 先執行該執行緒。換句話說,高優先順序的執行緒總是在系統排程演算法中獲取更多的cpu執行時間。

我們可以在乙個單cpu系統中測試下面的**:

static void main(string args)  

});  

t1.isbackground = true;  

t1.priority = threadpriority.highest;  

t1.start();  

thread t2 = new thread(() => 

});  

t2.isbackground = true;  

t2.start();  

console.readline();  

//停止執行緒  

cts.cancel();  

console.writeline("t1num:" + t1num.tostring());  

console.writeline("t2num:" + t2num.tostring());  

}

結果我們會發現,如果這段程式執行在單核計算機中,優先順序為highest的執行緒t1,其輸出值幾乎總是會大於優先順序為normal(預設)的執行緒t2。

在c#中,使用thread和threadpool新起的執行緒,預設優先順序都是normal。雖然可以像上面的示例那樣去修改執行緒的優先順序,但是一 般不建議這樣做。當然,如果是一些非常關鍵的執行緒,我們還是可以提公升執行緒的優先順序的。這些關鍵執行緒應當具有執行時間短、能即刻進入等待狀態等特徵。

執行緒優先順序

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

執行緒優先順序

優先順序是執行緒排程的重要依據。優先順序高的執行緒,永遠先獲得cpu的青睞。當然啦,作業系統會視情況調整各個執行緒的優先順序。例如前台執行緒的優先順序應該調高一些,後台執行緒的優先順序應該調低一些。執行緒的優先順序範圍從0 最低 到31 最高 當你產生執行緒時,並不是直接以數值指定其優先順序,而是採...

執行緒優先順序

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