次の方法で共有


優先度ブースト

各スレッドには、動的な優先度 があります。 これは、スケジューラが実行するスレッドを決定するために使用する優先順位です。 最初は、スレッドの動的優先度は基本優先度と同じです。 システムは、動的優先度を高めて低くして、応答性が高く、プロセッサ時間にスレッドが不足しないようにすることができます。 システムは、基本優先度レベルが 16 から 31 のスレッドの優先順位を上げません。 基本優先度が 0 ~ 15 のスレッドのみが動的優先度ブーストを受け取ります。

システムは、スレッドの動的優先度を高め、次のように応答性を高めます。

  • NORMAL_PRIORITY_CLASSを使用するプロセスがフォアグラウンドに取り込まれると、スケジューラはフォアグラウンド ウィンドウに関連付けられているプロセスの優先順位クラスをブーストし、バックグラウンド プロセスの優先度クラス以上になるようにします。 優先度クラスは、プロセスがフォアグラウンドでなくなったときに、元の設定に戻ります。

  • タイマー メッセージ、マウス メッセージ、キーボード入力などの入力をウィンドウが受信すると、スケジューラはウィンドウを所有するスレッドの優先順位を高めます。

  • ブロックされたスレッドの待機条件が満たされると、スケジューラはスレッドの優先度を高めます。 たとえば、ディスクまたはキーボード I/O に関連付けられている待機操作が完了すると、スレッドは優先度ブーストを受け取ります。

    setProcessPriorityBoostを呼び出すか、SetThreadPriorityBoost関数をすることで、優先度昇格機能を無効にすることができます。 この機能が無効になっているかどうかを確認するには、GetProcessPriorityBoostを呼び出すか、GetThreadPriorityBoost関数します。

スレッドの動的優先度を上げた後、スケジューラは、スレッドがタイム スライスを完了するたびに、スレッドが基本優先度に戻るまで、その優先度を 1 レベル減らします。 スレッドの動的優先度は、基本優先度より小さいことはありません。