| Autor |
Beitrag |
klezmor
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Sa 10.06.06 14:29
Kann mir vielleicht jemand sagen, wie ich die Laufzeit eines Threads bestimmen kann?
In meinem Programm laufen 4 Threads vom Objeckt TThread gleichzeitig, sie sind alle zu unterschiedlichen Zeiten mit ihren Aufgaben fertig, siehe Sortieralgorithmen--> hier
Kann mir jemand sagen, wie ich nun die Zeit bestimme, welche die einzelenen Threads benötigen?
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 10.06.06 14:38
Da gibt es mehrere Möglichkeiten:
Willst Du die aktuell benötigte Laufzeit wissen, sollte Dir QUERYPERFORMANCECOUNTER gute Dienste leisten.
Willst Du dagegen die CPU-Zeit wissen, musst Du diese über das Thread-Handle direkt bei Windows erfragen. Dafür habsch aber grad kein Beispiel da ... Ich weiß nur, dass der ProcExp von SysInternals das kann.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
klezmor 
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Sa 10.06.06 15:24
Ok habe es mit Krokos Unit unitClock siehe www.delphi-forum.de/...ryperformancecounter gelöst.
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
klezmor 
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Sa 10.06.06 15:31
Obwohl, wohl doch noch nicht ganz, da es sich um threads handelt, welche gewissermaßen ja parallel ablaufen, könnte es zu verheerenden Konflikten der Threads kommen.
Schließlich springt der Prozessor ja während den Threads immer wieder in die performance function und die globalen Variablen der Funktion werden somit von 4-verschiedenen Threads manipuliert. Hat jemand ne lösung? (will keine 4 prozeduren schreiben)
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
klezmor 
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Sa 10.06.06 15:37
Kann mir irgenjemand Krokos unit erklären.(eine globale Variable die nirgends initialisiert wird, aber als Argument übergeben wird  )
edit:Oh klar wird einfach ne funktion mit nem call by reference Aufruf sein.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 10.06.06 15:42
Zwei Möglichkeiten:
1. Für die Zeitmessung nicht Vars, sondern Threadvars zu verwenden. Dann hat jeder Thread eine eigene Variable
2. Jedem Thread einen Index in einem Array zuweisen ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
|