Einzelnen Beitrag anzeigen

moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

CPU Fresser beim Warten auf ein Flag - Lösung ?

  Alt 21. Dez 2006, 23:23
Moin !

Ich habe da ein Problem und hoffe mal das mir jemand weiterhelfen kann.
Und zwar habe ich irgendwo (ich glaube hier im Forum) mal ne Procedur gefunden, die auf ein Flag wartet. Die schaut so:
Delphi-Quellcode:
procedure WaitForFlag(Flag : PBoolean ; TimeOutSeconds : integer = 10);
var EndTime : Extended;
begin
  Flag^ := True;
  EndTime := Now() + TimeOutSeconds * OneSecond;

  while (Flag^ = True) and (Now() < EndTime) do
    Application.ProcessMessages;
  //if Flag^ then raise ETimeOut.Create;
end;
Das funktioniert auch alles prima. Nur die CPU Last steigt beim warten in ganz ungünstige Höhen. Teilweise bis 99% und dabei ist es auch fast egal, wie schnell der Rechner ist.

Frage also ... Hat jemand eine Procedure, die solange wartet bis ein Flag gesetzt ist? Andere Programmteile sollte natürlich im Hintergrund nicht geblockt werden.
Und ja ich brauche so eine Funktion, weil ich immer auf einen Bestimmten Zustand warten muss. Geht leider nicht anders.

Wäre für einen Tip Dankbar

Anbei noch ein kleines Demoprojekt was das Prob zeigt ...

Greetz Dominik
Angehängte Dateien
Dateityp: zip waitfor_983.zip (7,6 KB, 4x aufgerufen)
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat