Einzelnen Beitrag anzeigen

funkymick

Registriert seit: 3. Jun 2004
8 Beiträge
 
#15

Re: Threads: Wieso gibt's keine InterlockedRead - Funktion?

  Alt 3. Jun 2004, 09:28
ich arbeite auch im moment an einer multithreading-anwendung und muss aus mehreren threads variablen lesen bzw. schreiben... da hats bei mir auch oft genug exceptions gehagelt

dann habe ich von den CriticalSections zur absicherung von solchen lese/schreibvorgängen gelesen...

und unter delphi gibt es die klasse TMultiReadExclusiveWriteSynchronizer...

ein einfaches

T:=TMultiReadExclusiveWriteSynchronizer.Create;

erstellt das objekt und mit

T.BeginWrite;
bzw.
T.EndWrite;
kann ein schreibvorgang abgesichert werden... sprich solange nicht T.EndWrite; aufgerufen wurde, haben andere threads keinen lese-zugriff und warten bis endWrite aufgerufen wurde...

Voraussetzung ist, dass Lesevorgänge dann auch mit T.BeginRead; und T.EndRead; umgeben sind...

T.BeginWrite;
Variable1:=Wert;
T.EndWrite;

T.BeginRead;
Variable2:=Variable1;
T.EndRead;

Lesen funktioniert gleichteitig schreiben nur exclusiv...

Vielleicht Bringts dem einen oder anderen was...
  Mit Zitat antworten Zitat