AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Was passiert, wenn ein Event schnell hintereinander feuert?
Thema durchsuchen
Ansicht
Themen-Optionen

Was passiert, wenn ein Event schnell hintereinander feuert?

Ein Thema von Jumpy · begonnen am 30. Nov 2011 · letzter Beitrag vom 30. Nov 2011
 
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Was passiert, wenn ein Event schnell hintereinander feuert?

  Alt 30. Nov 2011, 08:32
Events durch Messages ja, da die Messagequeue irgendwann so voll wird, dass nach gewissen Prioritäten verworfen wird.

Bei Callbacks, die Event-Mäßig implementiert sind nein, da sie synchron ablaufen, und den Aufrufer so lange blockieren, bis die Verarbeitung abgeschlossen ist. (Da könnte höchstens der Aufrufer so witzig werden, und den Aufruf in einem Thread machen, der mit einem Timeout- bzw. Loadhandling dafür sorgt, dass die Callbacks reduziert werden.)

Für deinen Fall klingt ein Worker-Threadpool sinnvoll (gabs auch ein nettes Framework hier in der DP zu meine ich), nur sollte auf jeden Fall jeder Thread seine eigene DB-Connection erhalten. Die DB selbst kommt dank ihrer internen Locking-Mechanismen prima klar mit gleichzeitigen Zugriffen aus mehreren Threads (dafür wuden DBMS u.a. schließlich gebaut ). Beim Logging in eine Datei, müsstest du selber sicherstellen, dass immer nur ein Thread da rein fummelt, was mit einer CriticalSection aber auch recht simpel ist.

Fazit: Wenn du unsicher bist, wie dein Aufrufer sich bei längerer Blockierung verhält, und/oder Fenster-Messages mitspielen, wäre eine threadbasierte Lösung keine schlechte Idee.
"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
 


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 19:30 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