2010-05-17 6 views

Antwort

6

Unendliche Loops unterscheiden sich nicht von anderen laufenden Codes. Der Computer weiß nicht, dass die Endlosschleife keine komplizierte Berechnung ist, die nur viele Iterationen erfordert.

Wenn die Endlosschleife keinen Code enthält, der einige Systemfunktionen aufruft, die dem Betriebssystem Zeit zurückgeben, behandelt das Betriebssystem es als einen Prozess, der aktiv an etwas arbeitet und ihm Zeit zur Ausführung gibt. Wenn keine anderen Prozesse laufen, werden 100% der CPU verbraucht (auf einem Single-Core-System).

+1

Eigentlich in der modernen Mehrzweck-O/S, jeder vernünftige Code wird in eine unterbrechbare Wartezustand gehen, die von den Kernel hält auf diesem Thread etwas ausführt, bis er ihn braucht. –

+0

Einverstanden, aber mein Vergleich war mit einer intensiven Berechnung, wie sie für die akademische Forschung gemacht wurde. – NilObject

18

Die CPU kann während der Ausführung dieser Schleife (die niemals endet) nichts anderes tun. Selbst wenn Sie ein vorbeugendes Multitasking-System verwenden (so dass die Endlosschleife nur für immer ihren eigenen Prozess oder Thread blockiert), "ißt" die Schleife ihre Zeitscheibe jedes Mal, wenn der Präventiv-Scheduler des Betriebssystems sie übergibt CPU für das nächste Stück - nichts tun, aber die CPU-Zeit eines Stücks jedes Mal auffressen, so dass viel CPU für alle anderen Threads verloren geht, die könnte sonst nützliche Arbeit machen.

+1

Diese Antwort mag, obwohl sie richtig sein mag, zu schwierig und daher für Leute, die diese Art von Fragen stellen, nicht sehr hilfreich sein. Abgesehen von der ausführlichen Verwendung technischer Begriffe ist der zweite Satz, der den größten Teil des Absatzes darstellt, besonders viel zu lang, um analysiert zu werden. – sawa

6

Unendliche Schleifen an sich sind überhaupt kein Problem. Die meisten Anwendungen, die mit einem Benutzer interagieren, sind Endlosschleifen. Sie warten wiederholt auf Benutzer, handeln darauf und führen den Zyklus erneut durch. Das Betriebssystem selbst ist eine Endlosschleife. Diese Art von Endlosschleife wird als "produktiv" bezeichnet, da sie, obwohl sie auf unbestimmte Zeit wiederholt werden, regelmäßig etwas Nützliches für den Benutzer ausgeben.

Ich denke, Ihr Anliegen ist mit unproduktiven Endlosschleifen. Aber es ist klar, warum dies ein Problem ist. Sie haben alle Nachteile von produktiven Schleifen (Stromverbrauch, CPU-Zeit usw.) ohne die Vorteile zu nutzen. Sie produzieren nichts Nützliches.

+1

Obwohl der erste Absatz informativ und hilfreich ist, ist der zweite Absatz zirkulär. Die Frage ist, warum endlose Schleifen der ungewollten Art "Energie verbrauchen, CPU-Zeit verbrauchen und so weiter"? – sawa