Timer in C

DerJens

Grünschnabel
Hallo,

ich versuche z.Zt. einen Timer in C unter Windows zu programmieren. Hierzu benutze ich time.h und sys/timeb.h.
Ich habe vor, drei verschiedene Funktionen nacheinander eine gewisse Zeit arbeiten zu lassen. So soll eine Funktion z.B. 100 Millisekunden eine bestimmte Ausgabe machen und dann die nächste Funktion 100 Millisekunden eine andere Ausgabe usw.
Ich habe den Timer so realisert, dass ich die augenblickliche Systemzeit auslese und dann 100 Millisekunden hinzuaddiere. Dann lese ich in einer while Schleife so lange die Systemweit aus, bis diese der ersten gelesenen Systemzeit plus der 100 Millisekunden entspricht.
Das Problem ist, dass das Auslesen der Systemzeit auch einige Zeit lang dauert und ich somit nie genau auf eine Zeit pro Funktion von genau 100 Millisekunden komme. Weiß vielleicht jemand von Euch, wie ich sonst noch einen Timer, der dann natürlich genauer sein soll, realisieren kann. Bietet C da noch andere Möglichkeiten?

Danke!
 
Unter Linux benutze ich häufiger den HPET (Hight Performance Timer) den hab ich bei mir in den Kernel eincompiliert und das funktioniert blendend.
Vielleicht gibt es soetwas ja auch für Windows (bin ich mir eigentlich ganz sicher)
 
Die WinAPI bietet TIMER-Funktionalitäten.

Code:
UINT SetTimer(
    HWND hWnd,	// handle of window for timer messages
    UINT nIDEvent,	// timer identifier
    UINT uElapse,	// time-out value
    TIMERPROC lpTimerFunc 	// address of timer procedure
);

Erstelle eine Prozedur. Bei Aufruf dieser Prozedur gebe Text aus und starte Timer (mit Zeiger auf Prozedur, welche den ausgegebenen Text wieder löscht).
 
Zurück