Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#10

AW: TThread Suspend und Resume

  Alt 14. Sep 2016, 22:12
Da auch bei einem Sleep(1) ein "wartender" Thread zu 0% CPU Auslastung führt, habe ich das bisher immer genommen. Bei mir sehen die Execute-Methoden meist so aus:
Delphi-Quellcode:
procedure TMyThread.Execute;
var
  ...
begin
  while not Terminated do
  begin
    try
      try
        if FWaiting then
          Sleep(1)
        else
        begin
          // Eigentlicher Thread-Code
          // (setzt ggf. FWaiting selbst auf true wenn die Aufgabe durch ist,
          // da ein Bool aber atomar ist, kann dies auch von aussen passieren)
        end;
      except
        on ...
      end;
    finally
      ...
    end;
  end;
end;
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat