Hallo;
für eine kleine Textanimation in C (nur Konsole) ist mir GetTickCount und Sleep zu ungenau.
Ich habe mir also folgenden Code gebastelt, der in einer Endlosschleife immer 1 sek wartet und dann ausgibt "Eine Sekunde ist um".
Natürlich ist das nur ein Beispiel, die Funktion werde ich noch so umändern, dass sie mit Millisekunden funktioniert.
Code:
__int64 freq,count,old;
int i=0;
if (QueryPerformanceFrequency(&freq)==0)
{
printf("Fehler, Hardware unterstuetzt keinen High-Performance-Counter!");
getch();
exit(EXIT_FAILURE);
}
for (;;)
{
QueryPerformanceCounter(&count);
old=count;
while (((count-old)/freq)<1)
{
QueryPerformanceCounter(&count);
}
printf("Eine Sekunde ist um\n");
}
Das funktioniert hervorragend, hat aber einen entscheidenden Nachteil: es lastet die CPU zu 100% aus.
Wenn ich sleep(1) reinschreibe, wartet er aber 5 ms und die Genauigkeit von 1 ms, die ich haben will, wird nicht erreicht.
Was kann ich tun, damit der Computer nicht total ausgelastet wird in dieser Schleife?
EDIT:
sry, bitte nach "allgemeine fragen zum programmieren" verschieben.
danke