AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Threaded vs. Windows-Timer: Was ist 'besser'?
Thema durchsuchen
Ansicht
Themen-Optionen

Threaded vs. Windows-Timer: Was ist 'besser'?

Ein Thema von Iwo Asnet · begonnen am 20. Feb 2012 · letzter Beitrag vom 20. Feb 2012
Antwort Antwort
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#1

Threaded vs. Windows-Timer: Was ist 'besser'?

  Alt 20. Feb 2012, 12:23
Hallo,

Wir sind hier am 'streiten' bzw. nicht wissen (deshalb streiten), was 'besser' für eine Anwendung ist: Ein threaded Timer oder ein Windows-Timer.

Ein threaded Timer könnte so umgesetzt werden
Delphi-Quellcode:
Procedure TThreadedTimer.Execute;
Begin
  While not Terminated do begin
    If FEnabled then
      Synchronize (DoOnTimer);
    Sleep (FInterval);
  End
End;
Oder mit einem Event:
Delphi-Quellcode:
Procedure TThreadedTimer.Execute;
Begin
  While not Terminated do begin
    If WaitForSingleObject (FWhatEverHandle, FInterval) = WAIT_OBJECT_0 Then
       If FEnabled then
         Synchronize (DoOnTimer);Synchronize (DoOnTimer);
  End
End;
Welche Variante würdet ihr nehmen, wenn die Aufgabe 'optimiert den Code hinsichtlich Performance' heißt und ihr nur max. 20% einer CPU für euch habt?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Threaded vs. Windows-Timer: Was ist 'besser'?

  Alt 20. Feb 2012, 13:23
Da eigentlich aller wichtiger Code im Synchronize abläuft und im Timer eigentlich nur noch ein Sleep drin steckt.

Ist der Thread vollkommen nutzlos, da er nichts macht, außer schlafen.

Antwort: Windows-Timer (z.B. TTimer) ist definitiv besser.
(hier scheint es ja nicht um einen HighResolutionTimer zu gehn)


PS:
Zitat:
If FEnabled then
Da bei beiden Beispielen der Thread läuft, selbst wenn er nichts machen soll, verschwendet er sogar noch mehr Systemresourcen. (vorallem bei Enabled = False)
$2B or not $2B

Geändert von himitsu (20. Feb 2012 um 13:32 Uhr)
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#3

AW: Threaded vs. Windows-Timer: Was ist 'besser'?

  Alt 20. Feb 2012, 15:59
...Ist der Thread vollkommen nutzlos, da er nichts macht, außer schlafen.
Der Thread feuert in regelmäßigen Abständen ein Event. Damit ist er so genauso nutzlos wie ein Timer.
Antwort: Windows-Timer (z.B. TTimer) ist definitiv besser.
Ah, ok. Also sind z.B. 10-100 Windows timer nebst WM_Timer - Messages 'billiger' als a)10-100 Threads oder b) 1 Thread mit priority queue der 10-100 Timermessages verwaltet?

Ich dachte immer, diese WM_Timer sind teuer. Man lernt halt nie aus.
  Mit Zitat antworten Zitat
WoGe

Registriert seit: 16. Jun 2005
Ort: Kelkheim
178 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Threaded vs. Windows-Timer: Was ist 'besser'?

  Alt 20. Feb 2012, 16:01
Ähem,

vlt. gilt das ja in aktuellen Windows-Versionen nicht mehr, aber hatte die Timer-Botschaft nicht ein niedrige Priorität und konnte deshalb auch mal "verschluckt" werden?

Grüße
wo
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Threaded vs. Windows-Timer: Was ist 'besser'?

  Alt 20. Feb 2012, 16:54
Ah, ok. Also sind z.B. 10-100 Windows timer nebst WM_Timer - Messages 'billiger' als a)10-100 Threads oder b) 1 Thread mit priority queue der 10-100 Timermessages verwaltet?
Wozu so viele Timer?
Einer oder zumindest sehr wenige reichen doch, die ggf. die anderen Aufgaben anstoßen...

Ob nun 100 Threads oder 100 Timer, beides macht (meistens) wenig Sinn.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz