Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Umlaufzeit eines Threads ermitteln (https://www.delphipraxis.net/103390-umlaufzeit-eines-threads-ermitteln.html)

Thanatos81 15. Nov 2007 08:20


Umlaufzeit eines Threads ermitteln
 
Tach auch!

Ich hab da mal ne kurze Frage. Und zwar ermittele ich die ungefähre Umlaufzeit eines Threads, in dem ich mir am Anfang des Thread.Execute den Wert von "now" in eine TDateTime-Variable "lastStart" speichere und beim nächsten Durchlauf delta := MilliSecondsBetween(lastStart, now) aufrufe.

Jetzt könnte es natürlich ein Problem geben bei der Umstellung von Sommer- auf Normalzeit. Theoretisch könnte lastStart von 02:59:59 sein und now 02:01:00. Da hätte ich ein negatives Delta :shock:

Da das Programm durchlaufen soll ist GetTickCount ja auch keine Lösung. Da könnte/würde ich ein dementsprechendes Problem nach 49,7 Tagen haben.

Wie macht ihr das in euren Threads, die dauerhaft laufen und bei denen ihr die Umlaufzeit benötigt?

Bernhard Geyer 15. Nov 2007 08:22

Re: Umlaufzeit eines Threads ermitteln
 
Die Lösung mit Now würde schon gehen. Und Sommer/Winterzeitumstellung sollte über entsprechende API-Befehle auch bestimmbar sein.

Thanatos81 15. Nov 2007 08:33

Re: Umlaufzeit eines Threads ermitteln
 
Jupp, so in der Richtung. Eine Lösung gibts hier auch schon, Stichwort UTC:

http://www.delphipraxis.net/internal...=340194#340194

Danke für den Fingerzeig!

alzaimar 15. Nov 2007 09:13

Re: Umlaufzeit eines Threads ermitteln
 
Übrigens kannst Du sehr wohl GetTickCount nehmen. Du musst nur wissen, wie man mit negativem Delta umgeht ...
Delphi-Quellcode:
Var
  Delta : Int64;

Begin
  Delta := GetTickCount - LastCall;
  If Delta < 0 Then Delta := High (Cardinal) + Delta;
Ungetestet, sollte aber funktionieren.

Thanatos81 15. Nov 2007 09:19

Re: Umlaufzeit eines Threads ermitteln
 
Hmm, auch ne interessante Variante. Ich bastel da mal ein Testprogramm mit und lass das mal ein paar Wochen aufm Server laufen. Mal schauen was passiert ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz