Einzelnen Beitrag anzeigen

Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#1

(C) Schleife mit HighPerformanceCounter: 100% CPU-Auslastung

  Alt 18. Mai 2004, 21:05
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
Lukas
  Mit Zitat antworten Zitat