Programmpaus kleiner 1s erstellen



  • Hallo,

    ich möchte zum Aufbau eines Bildschirms eine Pause von 500ms erzeugen. Ich habe es mit der _sleep() Funktion schon versucht, die kleinste Zeit ist aber dort 1s. Wie kann ich eine kürzere Pause machen???

    MfG Xander100



  • timeGetTime(NULL) gibt die Anzahl der Millisekunden seit Mitternacht zurück. Damit kannst du dann milklisekundengenau warten



  • Hallo,
    Standard-C++ kennt weder _sleep, Sleep, wait, halt, stop noch timeGetTime. Welches BS verwendest du denn?



  • Maxi schrieb:

    timeGetTime(NULL) gibt die Anzahl der Millisekunden seit Mitternacht zurück. Damit kannst du dann milklisekundengenau warten

    timeGetTime nimmt keine Parameter und hat auch nichts mit Mitternacht zu tun, und Millisekundengenau ist es auch nicht standardmäßig 🙄



  • Falls du Windows benutzt:

    Schau dir GetTickCount() und Sleep() in der MSDN an.
    Falls dir deren Genauigkeit nicht ausreicht (in der Regel auf die ms genau), dann schau dir QueryPerformanceCounter() an. Der ist allerdings etwas aufwändiger zu nutzen.



  • Windows ist allerdings kein Echtzeitbetriebssystem. Das heißt du kannst nicht garantieren, dass Sleep(100) wirklich 0.1 Sekunden wartet. Es wartet zwar mindestens solange, kann aber auch viel länger warten, wenn z.B. noch andere Programme laufen.

    Der Perfomance-Counter liefert dir zwar eine Genauigkeit im MHz-Bereich, aber dein Programm kann unmöglich verhindern, dass es mitten in einem Befehl unterbrochen werden kann.



  • Na geil, das trifft auf Linux wohl genauso zu. Wenn ich nebenbei die Platte defragmentiere und den Urknall simuliere, kann auch nicht garantiert werden, dass mein Programm nicht doch 102ms schläft.
    Natürlich, wenn es ganz genau sein muss, dann verwende ich den PerformanceCounter, wenn ich noch z.B. 12ms Zeit hab, schlafe ich 5 und den Rest ratter ich in einer Schleife durch. Aber auch da ist es nicht garantiert, dass ein Betriebssystem mir die benötigte Rechenzeit zuteilt. Das ist aber IMO ein ganz anderes Thema...



  • Hallo,
    danke für die Antworten, ich hab jetzt noch ein bischen nachgeforscht und die Funktion

    Sleep(msec)

    in der delayimp.h

    gefunden. Hier kann ich die Wartezeit in msec angeben.


Anmelden zum Antworten