タスク マネージャーに移動し、プロセスを右クリックして優先度を [リアルタイム] に設定すると、多くの場合、プログラムのクラッシュが停止したり、実行速度が向上したりします。
プログラミングのコンテキストでは、これは何をしますか?
タスク マネージャーに移動し、プロセスを右クリックして優先度を [リアルタイム] に設定すると、多くの場合、プログラムのクラッシュが停止したり、実行速度が向上したりします。
プログラミングのコンテキストでは、これは何をしますか?
SetPriorityClass()を呼び出します。
すべてのスレッドには、スレッドの優先度値とそのプロセスの優先度クラスによって決定される基本優先度レベルがあります。システムは、すべての実行可能スレッドの基本優先度レベルを使用して、CPU 時間の次のスライスを取得するスレッドを決定します。SetThreadPriority 関数を使用すると、プロセスの優先度クラスに関連するスレッドの基本優先度レベルを設定できます。詳細については、スケジュールの優先度を参照してください。
実行タイム スライスをプロセスに割り当てるときに、多かれ少なかれ貪欲になるようにウィドウ スケジューラに指示します。リアルタイム実行では、(MSDN によると、ドライバーに対してさえも) 実行を決して明け渡さないため、アプリが外部イベントを待機しているが、それ自体 ( Sleep、SwitchToThreadまたは などWaitFor[Single|Multiple]Objects) を明け渡すことがない場合、アプリでストールが発生する可能性があります。そのため、リアルタイムを使用する必要があります。アプリケーションが正しく処理することがわかっている場合を除き、避けてください。
OS タスク スケジューラでこのプロセスに与えられる重みを変更することで機能します。CPU は一度に 1 つの命令しか実行できず (非常に簡単に言えば)、OS の仕事は、実行中の各プロセスから命令を交換し続けることです。優先度を上げたり下げたりすることで、現在マルチタスクされている他のアプリケーションと比較して、CPU に割り当てられる時間に影響を与えます。