Frage

Ich habe eine Liste Wrapper, der zwei Tstringlists und ein TClassList

hält

Ich brauche dieses Thema sicher zu sein, so dass:

  • Concurrent schreibt nicht erlaubt sind (Zustand von einer Art warten soll, eingegeben werden)
  • Beim Lesen während des Schreibens (oder umgekehrt) ist nicht erlaubt (Zustand von einer Art warten soll, eingegeben wird)
  • Concurrent liest sind erlaubt

Alle Ideen, wie kann ich dies tun? Mein Instinkt sagt mir, es braucht mehr als nur einen kritischen Abschnitt, vielleicht ein Semaphore oder „Verbrauchszähler“, vielleicht eine dieser in Verbindung mit einem CS.

Ich bin nur nicht ganz sicher, wo ich anfangen soll - alles von einem Gesamtkonzept in Englisch to-Code Psuedo, würde die Umsetzung oder externer Link delphi sehr geschätzt

.
War es hilfreich?

Lösung

Sie sollten einen Blick auf die TMultiReadExclusiveWriteSynchronizer Klasse deklariert in SysUtils.pas ...

Andere Tipps

Haben Sie einen Blick auf dieses Tutorial. Einfädeln des Delphi Way

Sehen Sie in Kapitel 11, aber es ist alles gute Sachen.

Sie wirklich TThreadList aussehen sollen.

Die Methoden .Add, .Remove, .Clear sperren automatisch die Liste für Sie. Bei Bedarf können Sie auch Sperren / Entsperren nach Bedarf:

x.LockList; 
try 
  //do whatever
finally  
  x.Unlocklist; 
end;

TMultiReadExclusiveWriteSynchronizer ist eine großartige Idee, aber ich weiß nicht, ob sie jemals alle Bugs ausgebügelt. Es ist schon immer Probleme unter Last hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top