Statt CriticalSection gibt es seit 'ner Weile auch TMonitor.
(Achtung, nicht das TMonitor aus TScreens sondern aus System ... ja, ich weiß der Name ist doof/irrsinnig/verwirrend, aber wenn jemand strunzdoof von C# klaut kopiert, dann kommt sowas bei raus)
Die TMonitor können an ALLE TObjekt angehängt werden.
Besonders geil, weil man so keine Extra-Variable braucht und es sogar ohne Umbauten an Fremdkomponenten nutzen kann (z.B. an einer TStringList).
Delphi-Quellcode:
TMonitor.Enter(MyList); // siehe auch TryEnter/Wait/Pulse und der Timeout im Parameter
try
finally
TMonitor.Exit(MyList);
end;
Statt TMonitor.Enter geht auch MonitorEnter
und könnte man sich auch selbst via ClassHelper als Methoden an TObject/TMyList/... hängen.
Delphi-Quellcode:
MyList.Enter; // oder z.B. Lock und Unlock
try
finally
MyList.Exit;
end;