Gleichzeitig lesend ist oftmals kein Problem (kommt aber auf die Variabel an, denn gleichzeitig einen Stream nutzen ist keine gute Idee).
Sobald man aber gleichzeitig Schreibend oder Schreibend+Lesend zugreifen will, müßte man sowieso absichern.
WinAPI > TRTLCriticalSection/RTL_CRITICAL_SECTION +
EnterCriticalSection
Delphi-CL (SyncObjs) >
TCriticalSection
Delphi-CL (SysUtils) >
TSimpleRWSync
Delphi-CL (SysUtils) >
TMultiReadExclusiveWriteSynchronizer
TSimpleRWSync kann man eigentlich vergessen, da es eigentlich nur eine CriticalSection enthält, aber falls man wenigstens seinen Code aufräumen will und Schreib-/Lesevorgänge entsprechende kennzeichnen will, dann ... nja, dann kann man es doch schonmal nutzen.
TMultiReadExclusiveWriteSynchronizer sollte vorallem Vorteile besitzen, wenn man sehr oft lesend zugreift und nur selten schreibend.
> Mehrere gleichzeitige Lesevorgänge werden erlaubt und bei einem Schreibzugriff wird alles geblockt.
> Aber dieses sollte man natürlich nur nutzen, wenn gleichzeitige Lesevorgänge kein Problem darstellen.
Und falls man ein bissl schreibfaul ist oder sich TMultiReadExclusiveWriteSynchronizer nicht merken kann ...
TMREWSync.
Ein Therapeut entspricht 1024 Gigapeut.