Hallo,

ich habe ein Problem mit einer while Schleife die mir eine Verzoegerung von distanz Sekunden schaffen soll.
Erstmal der Code:
PHP-Code:
void Sd20::verzoegerung (int distanz

#if DEBUG > 0     
   
std::cout << "sd20::verzoegerung" << std::endl
#endif     

   
clock_t timer;     
   
timer clock() + distanz CLOCKS_PER_SEC ;     
   
test 0;     
   while (
clock()<timer)
   {     
      
test++;     // Testvariable zum zählen wie oft die Schleife läuft
      
usleep(10000);     
      
qApp->processEvents(); //Während der Schleife auf Events reagieren     
   
}         
   
std::cout << test << std::endl

Das qApp->processEvents(); brauche ich damit meine GUI auch innerhalb der Wartezeit Buttons gleich annimmt (ohne lange verzögerung). (GUI mit QT erstellt)

Entferne ich das usleep(10000); funktioniert alles wunderbar (bis auf den kleinen Nachteil das die Schleife 30000x durchläuft und die CPU Auslastung 85% beträgt )

In dem Moment wenn ich die Funktion (mit sleep) aufrufe, friert mein Programm teilweise ein, einige Anzeigen aktualisieren sich nicht mehr, und es reagiert teilweise nicht mehr auf Buttons.

Weiss einer warum sich das sleep nicht mit dem Rest verträgt? Theoretisch sollte er doch einfach nur 10ms warten und dann weitermachen oder sehe ich das Falsch?

Ich bin für jeden Tip dankbar. (solange es bei der Prozesssteuerung bleibt -> KEINE THREADS )

gruß
Tobias

PS: Mir würde es reichen wenn er die Schleife meinetwegen 10x (wenn sein muss auch 100x oder 500x) durchläuft.