共用方式為


優先順序反轉

當高優先順序線程無限期延遲時,等候低優先順序線程所持有的資源時,就會發生稱為 優先順序反轉 的現象,因為有不相關的中優先順序線程存在而無法繼續。 因此,低中優先順序線程有效地拒絕對CPU的存取。

例如,優先順序為 4 的線程 T1 在取得鎖定之後,優先於優先順序為 8 的較高優先順序線程 T2。 接著,優先順序為 12 的線程 T3 會先佔 T2,並封鎖嘗試取得 T1 所持有的鎖定。 此時,T1 和 T2 都已準備好執行,但由於 T2 具有較高的優先順序,因此它會繼續執行,有效地防止 T3 成為較高優先順序的線程,因為 T1 無法執行並釋放鎖定。

線程排程器會透過稱為 AutoBoost 的功能解決此問題。 AutoBoost 會自動追蹤資源保留,並套用線程絕對不能低於的優先順序樓層來調整線程優先順序。 例如,如果低優先順序線程取得重要區段,且高優先順序線程在等候關鍵區段時遭到封鎖,則擁有者優先順序會提高到等候者的最大優先順序,直到釋放資源為止。