Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#13

AW: Interface und 'normale' Referenz

  Alt 7. Sep 2010, 09:20
ist der Referenzzähler von Interfaces Thread sicher?
Interfaces in Delphi haben keinen Referenzzähler. Die konkreten Klassen wie z.B. TTinterfacedObject, TInterfacedPersistent oder TComponent sorgen für die Referenzzählung - daher muss man wissen, wie diese implementiert ist, um Probleme mit Threads oder Speicherlecks zu vermeiden.
  • Bei TTinterfacedObject kann man im Code direkt sehen, dass threadsicher vorgegangen wird
  • Bei TTinterfacedPersistent wird die Referenzzählung an ein 'FOwnerInterface' Feld delegiert (das vorhanden sein kann aber nicht muss...)
  • Bei TComponent wird eine Referenzzählung an ein IVCLComObject delegiert, falls es vorhanden ist

Es gibt noch weitere Varianten der Referenzzählung (zum Beispiel bei der TRemotable für Soap). Interfaces in Delphi erlauben Freiheiten bei der Implementierung, die es in anderen Sprachen nicht gibt - wer mag, kann das natürlich auch als Vorteil sehen.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat