Einzelnen Beitrag anzeigen

uups

Registriert seit: 23. Aug 2004
68 Beiträge
 
#3

AW: TMonitor: Klassenmethoden benutzen oder neue Instanz erstellen?

  Alt 25. Apr 2019, 20:33
@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?

Geändert von uups (25. Apr 2019 um 20:41 Uhr)
  Mit Zitat antworten Zitat