プロセスはリアルタイム優先度で実行されませんが、単一スレッドの優先度をリアルタイム優先度に設定することは可能ですか?
2 に答える
ウィンドウのスケジューリングの優先順位は、状況を明確に説明しています。「リアルタイム優先度」と呼ばれるスレッド優先度はありません。スレッドが取得できる最高の優先度は ですTHREAD_PRIORITY_TIME_CRITICAL
。しかし、これはスレッドの基本優先度を完全に説明しているわけではありません。これは、プロセスの優先度クラスによっても決定されます。ほとんどすべてのプロセス優先度クラスでは、 を設定THREAD_PRIORITY_TIME_CRITICAL
すると、スレッドは基本優先度 15 で実行されます。1 つの例外はREALTIME_PRIORITY_CLASS
. THREAD_PRIORITY_TIME_CRITICAL
に設定されたプロセス内に設定されたスレッドREALTIME_PRIORITY_CLASS
は、取得する最高の優先度である基本優先度 31 で実行されます。
との組み合わせによりNORMAL_PRIORITY_CLASS
、THREAD_PRIORITY_TIME_CRITICAL
スレッドはすでに他のほとんどのスレッド (OS も) よりもはるかに優れていますが、これをリアルタイムとは呼びません。
私の観点では (「スケジューリング優先順位リスト」で説明されているように) リアルタイムは 15 を超える基本優先順位でのみ開始されます。したがって、スレッドは、そのプロセスがREALTIME_PRIORITY_CLASS
.
つまり、あなたの質問に対する正解は NO です。プロセスにリアルタイム優先度がない場合、スレッドは実際の優先度を取得できません。
を使用することは可能ですSetThreadPriority
が、推奨されません。