Dies ist eine allgemeine Frage, die ich mich immer gefragt habe.
Ist es für eine CPU im Allgemeinen intensiv, Threads zu erstellen, die "while not true ..." - Schleifen oder ähnliches ausführen?
Angenommen, ich mache:
// pseudo-code
new Thread(function() {
while (!useHasDoneSomething) {
// do nothing...
}
alert("you did something!");
}
Es ist also nur ein Teil des Codes, der in einem Thread ausgeführt wird, der darauf wartet, dass etwas passiert.
Aus irgendeinem Grund stelle ich mir vor, dass dies die CPU unter Druck setzen würde. Obwohl es sich nur um eine kleine Schleife handelt, wird die Schleife in dem Moment erneut ausgeführt, in dem ein Zyklus abgeschlossen ist. Würde das nicht bedeuten, dass es den Zyklus viele Male pro Millisekunde durchläuft? ... pro Nanosekunde!?
Das Betriebssystem "behandelt" das Programm und die Threads, oder? Aber das ist immer noch eine Menge Aufmerksamkeit für das Ausführen einer Schleife. Wenn die CPU nichts anderes zu tun hat, würde sie sich dann nicht einfach auf diese Schleife konzentrieren und dabei die gesamte Leerlaufzeit verbrauchen ?
Was ist, wenn ich 1000 Threads erstelle, die alle dieselbe Schleife ausführen? Wie könnte sich dies auf die Leistung / CPU-Zyklen auswirken?
Funktionieren Ereignisse auf diese Weise auch intern? Wurde ein Thread erstellt, der Schleifen erstellt, wenn Sie auf ein Ereignis in Java, .NET, Javascript usw. warten (z. B. durch Drücken einer Taste oder Ändern der Fenstergröße)?