/* Page prose (ja) */
"PriorityInversion" = "# 優先度逆転、手短に\n\n[GCD の基礎](GCD%20Fundamentals.playgroundchapter/Overview) の章で、**Quality of Service（QoS）** に出会いました。キューの作業がどれほど緊急かをシステムに伝える優先度のヒント（`.userInteractive`、`.utility`、`.background`、...）です。\n\n**優先度逆転** とは、優先度の高いタスクが、優先度の低いタスクが保持している資源を待ったまま動けなくなり、その結果「重要な」作業が実質的に「重要でない」作業の速度で走ってしまう状態のことです。`.background` の窓口係が台帳のロックをつかみ、それからシステムが他のことで忙しいために CPU 時間を奪われる様子を想像してください。`.userInteractive` の窓口係がいま同じロックを必要としているのに、手に入れられません。緊急のタスクが怠けているタスクを待つのです。優先度が*逆転*しています。\n\nふつう、これを手作業で直すことはありません。GCD とモダンなランタイムは **優先度の寄付**（priority donation）を行い、優先度の低い保持者を一時的に引き上げて、資源を終えて解放できるようにします。トラブルを避けるために*できる*ことはこうです。大きく異なる QoS レベルにまたがって一つのロックやシリアルキューを共有しないこと、そしてクリティカルセクション内の作業を短く保ち、誰も共有資源を必要以上に長く保持しないようにすることです。\n\n[前へ](@previous)  |  7 / 9 ページ  |  [次へ: スレッド安全性を考える](@next)";
