Wie kann man eine while(true) schleife langsamer machen?
6 Antworten
Du könntest eine leere, innere Schleife einbauen. for(int i=0;i<10000;i++){}
Das Problem dabei ist allerdings, dass diese Verzögerung auf unterschiedlichen Rechnern unterschiedlich lang ausfällt. Besser ist es, einen Sleep-Befehl, Wait-Befehl oder setTimeout-Befehl zu finden.
Joa, aber sehr verbreitet. Jedes Windowsprogramm läuft in einer Endlosschleife und bei sehr vielen Programmen passiert etwas in regelmäßigen Zeitabständen, was bedeutet, dass eine künstliche Verzögerung geschaffen werden musste.
Irgendwann ist ein kluger Kopf auf die Idee gekommen, für genau diese Zwecke Threads pausierbar zu machen.
Ja sicher. Der Trick ist, mehrere Endlosschleifen parallel laufen zu lassen.
Ich würde wetten, dass die meisten modernen Compiler so etwas wegoptimieren...
Du meinst, dass die Leeranweisung erkannt wird? Dann müsste man Pseudoanweisungen verwenden (a=a) Der Compiler müsste schon mächtig intelligent programmiert sein, um alle Formen von Dummybefehle optimieren zu können.
Im namespace System.Threading findest Du die Möglichkeit einen Thread zu pausieren.
Vielleicht hilft Dir das?
Bau nh Sleepfunktion ein. Je nach dem in welcher Programmiersprache du bist.
z.B. while(true){/*code*/ Sleep(2000)}
MfG
In vielen Programmiersprachen gibt es einen delay() befehl den einfach in die letzte zeile der schleife schreiben und in die Klammern die anzahl von sekunden (in Tausendstel) die am ende (bis zur nächsten wiederholung) gewartet werden soll.
Du könntest den Thread schlafen legen für ein paar sekunden um sie "langsamer" zu machen.
Schönes Antipattern.