Timer

hallo!

ich suche eine timer funktion für c++
die zb nur alle 5 sekunden einen befehl ausführt

mein programm besteht aus einer endlos schleife die ca so aussieht:

while(true)
{
if( counter==5000) {befehl(); counter=0;}
counter++;
}

das soll bewirken das befehl() nicht ständig ausgeführt wird...
aber nun hätte ich das ganze gerne genauer und wenn möglich auch cpu schonender ;)
aber nicht mit sleep() oder sonstigem...

einfach eine timer funktion wäre gut

greetz
 
unter Windows einfach die Funktion Sleep(ms) verwenden !!!

zb. So für dein Problem

Code:
#include <windows.h>

while(true)
{
     Sleep(5000); //Zeit in millisekunden !
     execute();//deine Funktion !
}
 
Original von NULL!=NULL

das soll bewirken das befehl() nicht ständig ausgeführt wird...
aber nun hätte ich das ganze gerne genauer und wenn möglich auch cpu schonender ;)
aber nicht mit sleep() oder sonstigem...

Sleep-Funktionen sind aber sehr CPU schonend und machen genau, was Du erreichen möchtest.
 
NEIN!

ich möchte ja erreichen das mein programm
1) entweder wenn 5 sekunden rum sind das und das macht
2) oder einfach weiter arbeitet

und net einfach 5 sekunden lang ganix macht
 
Ich bin jetz nicht so der C++ Freak, aber das könnte man z. B. über nen extra Thread regeln. Auch wenns wohl bissl umständlicher ist.

Alternativ kannst du auch mit dieser Timestamp Klasse arbeiten.

Wenn du mit vc++ arbeitest, helfen dir sicher diese Funktionen weiter: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/time_functions.asp


edit: aber was du auch immer machst, weshalb muss es genau 5 sekunden bis zu dieser aktion dauern?
könntest ja erst die aktionen abrattern lassen und dann mittels sleep() 'warten'.
 
Genau ist SetTimer() allerdings nicht da es einfach WM_TIMER aufruft und die Nachricht hat nicht höchste Priorität, aber es ist ja wahrscheinlich kein zeitkritischer Prozess den du Steuern willst...
 
Zurück
Oben