Einzelnen Beitrag anzeigen

MiKaEr
(Gast)

n/a Beiträge
 
#7

AW: Thread aus Thread starten (Thread startet nicht)

  Alt 1. Feb 2012, 21:24
wenn die Zeit noch nicht erreicht ist, dann kannst Du den Thread ja eine gewisse Zeit schlafen legen (sleep(zielzeitInSekunden - nowInSekunden)). das werde ich direkt mal ausprobieren.

es geht hier um dynamisch erzeugte "objekte" die überwacht werden. ich möchte nur ungern hundert timer erstellen.


folgendes habe ich nun (kurzfassung):
Delphi-Quellcode:
procedure watcher(iNextRun: LongInt);
var
 // Variablen Deklaration
begin
 iSleep := iNextRun - DateTimeToUnix(now); // zeit errechnen, welche es bis zum "countdown" ist
 if iSleep < 0 then // sicherheitshalber prüfen, ob der wert positiv ist
  iSleep := 1;

 while True do // ungehindert (hoffe ich ja) und unendlich lange (bis programmende) ..
  begin
   Sleep(iSleep * 1000); // schlafe exakt die zeit, welche oben als "countdown" genannt wurde

   if DateTimeToUnix(now) >= iNextRun then // ist der zeitpunkt erreicht dann..
    begin
     //.. führe noch mehr anweisungen aus

     // danach fängt der code wieder oben bei sleep() an
    end;
  end;
end;
von der cpu-belastung her ist es nun perfekt. vorher 13% (pro thread), nun maximal 1%.

Geändert von MiKaEr ( 1. Feb 2012 um 21:32 Uhr)
  Mit Zitat antworten Zitat