為配合主幹穩定開發模型,並確保生態系統的平台穩定性,我們將於 2026 年起,在第 2 季和第 4 季將原始碼發布至 AOSP。如要建構及貢獻 AOSP,建議使用 android-latest-release,而非 aosp-main。android-latest-release 資訊清單分支版本一律會參照推送至 AOSP 的最新版本。詳情請參閱「Android 開放原始碼計畫變更」一文。
優先順序繼承
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
優先順序倒置是指高優先順序交易因低優先順序工作而延遲,因為低優先順序工作持有高優先順序工作所需的資源。為減輕優先權反轉問題,Android 支援透過三種不同的優先權繼承形式,以不同優先權執行執行緒:交易優先權繼承、節點優先權繼承和即時優先權繼承。
本頁面將說明這些不同形式的優先權繼承。
交易優先順序繼承
發出同步繫結器呼叫時,高優先順序執行緒可能會遭到低優先順序執行緒封鎖,直到低優先順序執行緒傳送回覆為止。舉例來說,如果執行緒的 nice 值為 -19,可能會遭到 nice 預設值為 0 的執行緒封鎖。
交易優先權繼承可修正這個問題,因為繫結器驅動程式會暫時變更處理交易的繫結器執行緒優先權,以符合呼叫端的優先權。交易完成後,繫結器驅動程式會將繫結器執行緒的優先順序還原為先前的值。
節點優先順序繼承
在某些情況下 (例如需要低延遲),非同步交易的優先順序很重要。
節點優先順序繼承可讓您設定節點上所有交易應執行的最低優先順序。設定節點優先順序繼承後,節點上的所有交易都會以這個最低優先順序執行。
節點優先順序的繼承規則如下:
如果交易是同步的,優先順序會變成 max(min_node_priority, caller_priority);。
如果交易為非同步,優先順序會變成 max(default_priority (nice 0), min_node_priority);。
設定節點優先順序繼承
如要設定節點優先順序的繼承方式,請使用 BBinder::setMinSchedulerPolicy。
即時優先權繼承
Android 會使用 SCHED_FIFO 等即時排程政策,確保延遲時間至關重要的執行緒能及時完成工作。此外,Android 某些對延遲時間要求嚴格的工作會分散到兩個以上的程序。
即時優先權繼承的運作方式與 nice 值完全相同,但有以下例外狀況:
- 即時優先順序繼承功能預設為停用。
- 即時優先順序值越大,優先順序越高。
啟用即時優先權繼承
您必須使用 BBinder::setInheritRt(true) 呼叫,為個別節點啟用即時優先順序繼承。
這個頁面中的內容和程式碼範例均受《內容授權》中的授權所規範。Java 與 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。
上次更新時間:2025-12-03 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-12-03 (世界標準時間)。"],[],[]]