Wenn es um Objekte geht, braucht man nicht unbedingt eine sonstwo rumliegende CriticalSection.
Delphi bringt auch ein TMonitor mit (System.TMonitor, weil der Name wurde einfach nur extrem ungünstig raubkopiert).
Und damit kann man sowas, wie eine CriticalSection an jedes Delphi-Objekt hängen.
Delphi-Quellcode:
System.TMonitor.Enter(Obj); // oder TryEnter
try
...
finally
System.TMonitor.Exit(Obj);
end;
Mir war so, als gab es schon eine threadsicher Queue/Stack in Delphi, aber die bei Beiden in den Generics sind es leider nicht.
Irgendwo gibt es aber zumindest eine thread-save TList (leider nicht die generische).
Gerade eine Queue macht sich, zur Verwaltung/Abarbeitung von Jobs recht gut.
Ein Therapeut entspricht 1024 Gigapeut.