MP4 から MP3 へのファイル変換を実行しているときに、VLC メディア プレーヤーが最大 98% の CPU を使用することがあることに気付きました。私の理解では、OS は各プロセスが取得する時間のバランスをとろうとするため、これが私の注意を引きました。ディスク デフラグ ツールやアンチウイルスなどのプログラムも、このような規模のプロセッサ サイクルを必要とする可能性があると感じています。コード(C、C++)でどのように達成しましたか?
1 に答える
1
OS にもよりますが、OS は通常、各プロセスが取得する時間のバランスを取ろうとしますが、これは主な目的ではありません。
スマート スケジューラは代わりに、利用可能な CPU を利用しながら、ユーザー入力やハードウェア イベントなどの優先度の高いものに応答します。正常に動作するスレッドは、実行する作業 (イベントのブロックなど) がなくなった場合、CPU クォータの前にタイム スライスを撤回します。そうしないと、締め切り時にスケジューラが CPU を引き継いで (プリエンプト)、他のスレッドに実行の機会を与える可能性があります。 .
スケジューラーへのヒントとしてスレッドの優先度を設定すると、引き継ぎ条件に影響を与える可能性がありますが、すべてスケジューラーと OS 内部に依存します。
簡単に言えば、CPUコアを利用するために特別なことをする必要はありません。計算が集中している場合、OSが最大限に活用します。
于 2015-07-24T07:40:56.917 に答える