これは私がいつも疑問に思っている一般的な質問です。
一般に、CPUが「while not true ...」ループなどを実行するスレッドを作成することは集中的ですか?
たとえば、次のようにするとします。
// pseudo-code
new Thread(function() {
while (!useHasDoneSomething) {
// do nothing...
}
alert("you did something!");
}
つまり、何かが発生するのを待つスレッドで実行されるコードの一部です。
何らかの理由で、これがCPUに圧力をかけると想像します。結局のところ、それは1つの小さなループですが、サイクルが行われた瞬間にループを再実行しています。これは、1ミリ秒に何回もサイクルを繰り返すことを意味しませんか?...ナノ秒あたり!?
オペレーティングシステムはプログラムとスレッドを「処理」しますよね?しかし、それでもループの実行にはかなりの注意が必要です。CPUが他に何もすることができない場合、CPUはそのループに集中し、それによってすべてのアイドル時間を消費しませんか?
すべて同じループを行うスレッドを1000個作成するとどうなりますか?それはパフォーマンス/ CPUサイクルにどのように影響しますか?
さらに、これはイベントが内部でどのように機能するのですか?Java、.NET、Javascriptなどのイベント(ボタンを押す、ウィンドウのサイズ変更など)を「聞いている」とき、ループするスレッドが作成されていますか?