RT thread 互斥量中優先順序繼承機制

2021-08-30 15:22:35 字數 619 閱讀 1319

三個執行緒分別是 h執行緒、m執行緒、l執行緒  

1.三個執行緒的優先順序順序是:h執行緒 > m執行緒 > l執行緒;

2.正常執行的時候h執行緒可以打斷m執行緒與l執行緒, m執行緒可以打斷l執行緒;

3.假設系統有乙個資源被保護了,此時該資源被l執行緒在使用,某一時刻h執行緒需要使用該資源,但l執行緒還未使用完,h執行緒申請不到而進入阻塞態,此時已出現優先順序翻轉現象;

沒有優先順序繼承機制的時候:

如果l執行緒執行的時候,m執行緒剛好被喚醒了,由於m執行緒的優先順序比較高,會打斷l執行緒,搶占cpu使用權,直到m執行緒執行完成;

m執行緒將cpu的使用權給l執行緒,l執行緒繼續執行,l執行完後釋放該資源;

h執行緒得到該資源,從阻塞態解除;

這個過程,高優先順序的h等待了m執行緒+l執行緒的時間,如果有更多執行緒的時候,那系統就崩潰了,等不起的!

有優先順序繼承機制的時候:

在h賢臣申請資源的時候由於申請不到資源進入阻塞態,

系統會把當前使用資源的l執行緒的優先順序臨時提高到與h執行緒的優先順序相同

;此時m執行緒被喚醒也不會打斷l執行緒;

l執行緒執行完畢,釋放資源,h執行緒獲取資源被繼續執行,h執行緒等待的時間只是l執行緒的執行時間。

RT Thread學習記錄10 執行緒的優先順序翻轉

1.優先順序翻轉 使用訊號量會導致的另乙個潛在問題是執行緒優先順序翻轉問題。所謂執行緒優先順序翻轉,即當乙個高優先順序執行緒試圖通過某種互斥ipc物件機制訪問共享資源時,如果該ipc物件已被低優先順序的執行緒所持有,而這個低優先順序執行緒在執行過程中可能又被其它一些 中等優先順序的執行緒搶占,因此造...

RT Thread應用9 互斥量1

互斥量作用 保護資源的互鎖 過程 用於互鎖的互斥量可以充當保護資源的令牌。當乙個執行緒希望訪問某個資源時,它必須先獲取令牌。當執行緒使用完資源後,必須還回令牌,以便其它執行緒可以訪問該資源。在之前的訊號量提到關於執行緒優先順序翻轉的問題,互斥量可以通過優先順序繼承演算法,降低優先順序翻轉問題產生的影...

python優先順序佇列 python 優先順序佇列

簡介 優先順序佇列是基於堆的,關於堆的時候可以參考文章堆,優先順序佇列就是入隊時,會分配乙個優先順序,之後出隊時,根據優先順序出列。如,入隊時 4,a 6,r 3 d 則出隊順序 6,r 4,a 3 d 優先順序佇列的python實現 class priorityqueue object def i...