1. 程式人生 > >RT-thread 互斥量中優先順序繼承機制

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

三個執行緒分別是 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執行緒的執行時間。