@Daniel
Danke für die schnelle Reaktion!
Tur mir leid wenn meine Frage für einen Experten wie Dich jetzt etwas blöd klingt, aber wie trägt ein leeres, gerade erstelltes TObject zum Schutz einer Variable bei, die ihre eindeutige Speicheradresse ganz woanders hat? Z.B. hier ist ein Ausschnitt aus System.SyncObjs, diese Methoden werden aufgerufen, wenn man aus einer plattformübergreifenden Anwendung auf eine Instanz von TCriticalSection zufreift:
Delphi-Quellcode:
{ TCriticalSection.TCritSec }
procedure TCriticalSection.TCritSec.Initialize;
begin
FSync := TObject.Create;
end;
procedure TCriticalSection.TCritSec.Free;
begin
FSync.Free;
end;
procedure TCriticalSection.TCritSec.Enter;
begin
TMonitor.Enter(FSync);
end;
procedure TCriticalSection.TCritSec.Leave;
begin
TMonitor.Exit(FSync);
end;
function TCriticalSection.TCritSec.TryEnter: Boolean;
begin
Result := TMonitor.TryEnter(FSync);
end;
edit: Die Frage oben war wirklich blöd. Ich glaube, ich habe es kapiert. Anstelle von TCriticalSection erstellt mann einen globales TObject, das zu schützenden Bereich markiert. Habe ich richtig verstanden?