AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Interface und 'normale' Referenz

Ein Thema von hansmaad · begonnen am 6. Sep 2010 · letzter Beitrag vom 7. Sep 2010
 
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#14

AW: Interface und 'normale' Referenz

  Alt 7. Sep 2010, 10:21
Hallo,
Dann muss eine Funktion, die ein IMachBuh Parameter als const nimmt trotzdem aufpassen, dass ein anderer Thread das Objekt nicht weglöscht, denn sie inkrementiert den Zähler überhaupt nicht ??
klar musst Du bei mehreren Threads aufpassen. Das ist aber kein spezifischer Interfaceproblem. Jeder Thread kann Objekte freigeben, die in einem anderen gerade verwendet werden. Das kannst Du nur ausschließen, wenn Du ausschließlich Interfaces verwendest, dann wird nämlich die Referenz in der aufrufenden Methode gehalten und das const ist damit nur eine Optimierung:

Delphi-Quellcode:
type
  IIntf = interface
    procedure Blubb;
  end;

  TIntf = class(TInterfacedObject, IIntf)
    procedure Blubb;
  end;

procedure bla;
var
  A: IIntf;
begin
  A := TIntf.Create; // Referenz 1

  Machwas(A); // keine Änderung
end; // hier Referenz 0 -> Objekt wird zerstört

procedure Machwas(const B: IInf) // Keine Änderung
begin
  B.Blubb; // hier kann jeder Thread etwas mit dem Interface machen, der Referenzzähler bleibt immer >= 1
end;
Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz