以下爲看視頻筆記..........
1.優先級翻轉
使用信號量會導致的另一個潛在問題是線程優先級翻轉問題。所謂線程優先級翻轉,即當一個高優先級線程試圖通過某種互斥IPC對象機制訪問兵享資源時,.如果該IPC對象已被-低優先級的線程所持有,而這個低優先級線程在運行過程中可能又被其它- -些中等優先級的線程搶佔,因此造成高優先級線程被許多具有較低優先級的線程阻塞的情況。優先級翻轉會造成高優先級線程的實時性得不到保證。{圖中M代表共享資源,A,B,C代表線程}
2. 優先級繼承
在RT-Thread中,通過互斥量的優先級繼承算法,可以有效的解決優先級翻轉問題。
優先級繼承是指提高某個佔有某種共享資源的低優先級線程的優先級,使之與所有等待該資源的線程中優先級最高的那個線程的優先級相等,從而得到更快的執行然後釋放共享資源,而 當這個低優先級線程釋放該資源時,優先級重新回到初始設定值。
繼承優先級的線程避免了系統共享資源被任何中間優先級的線程搶佔。
3. 優先級翻轉示例
在priority_inversion.c代碼中。
優先級翻轉現象提醒編程人員對共享資源進行互斥訪問的代碼段應儘量短。