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.

Woher ich das weiß:Berufserfahrung – Programmierer
k3ltis  15.06.2016, 10:11

Schönes Antipattern.

1
Suboptimierer  15.06.2016, 10:14
@k3ltis

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.

0
PWolff  15.06.2016, 12:14
@Suboptimierer

Irgendwann ist ein kluger Kopf auf die Idee gekommen, für genau diese Zwecke Threads pausierbar zu machen.

1
Suboptimierer  15.06.2016, 12:17
@PWolff

Ja sicher. Der Trick ist, mehrere Endlosschleifen parallel laufen zu lassen.

0
oelbart  15.06.2016, 20:49

Ich würde wetten, dass die meisten modernen Compiler so etwas wegoptimieren...

0
Suboptimierer  16.06.2016, 09:44
@oelbart

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.

0

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.