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.