Forum: Algorithmen, Datenstrukturen und Klassendesign
by Sir Rufo,
24. Sep 2011
Eine TCriticalSection sperrt aber immer komplett beim Lesen und Schreiben (Enter..Leave), der TMultiReadExclusiveWriteSynchronizer sperrt aber immer nur bei Schreibzugriffen (BeginWrite..EndWrite).
Somit sind die schon mal A sehr verwandt und B in einer MultiThread-Umgebung besser.
Allerdings in dieser vom TE aufgezeigten Konstellation nicht notwendig (2 Threads schreibend, 1 Thread lesend)...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Sir Rufo,
23. Sep 2011
U are right :) das mit dem Sync kann man da vergessen.
Somit verbleibt als Lösung eine Queue zwischen die beiden Threads zu legen, die von dem einen befüllt und dem anderen abgearbeitet wird.
Das Befüllen und Auslesen muss zwingend mit einer CriticalSection abgesichert werden, oder alternativ mit dem MultiRead-Onkel ;)
Da es sich aber nur um einen Thread handelt wird das keine Vorteile...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Sir Rufo,
23. Sep 2011
Es gibt von Synchronize aber auch noch ein paar überladene Methoden, wo man den gewünschten Thread-Kontext angeben kann.
Ansonsten mit Critical Sections arbeiten, wenn die Daten einfach nur abgeliefert werden sollen.
Und anstatt Synchronize kann man es auch mal mit Queue versuchen :)