AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Objekt als Rückgabe von Funktion - Wie elegant Freigabe regeln?
Thema durchsuchen
Ansicht
Themen-Optionen

Objekt als Rückgabe von Funktion - Wie elegant Freigabe regeln?

Ein Thema von Zacherl · begonnen am 22. Aug 2013 · letzter Beitrag vom 25. Aug 2013
 
Furtbichler
(Gast)

n/a Beiträge
 
#14

AW: Objekt als Rückgabe von Funktion - Wie elegant Freigabe regeln?

  Alt 25. Aug 2013, 09:19
Eigentlich ist es doch recht einfach:
man benötigt mehrere Instanzen des Data-Transfer-Objects.
Bisserl suboptimal bezüglich der Performance, würde ich sagen.

Wenn das Datenobjekt ganz genau weiß, wann es nicht mehr benötigt wird, dann lass es sich doch selbst zerstören. Du hast geschrieben, das das Teil sowohl in einem Thread, als auch von außerhalb angefasst wird. Der Thread weiss ja, wann er das Objekt nicht mehr benötigt. Das kann er dann ja auch sagen.

Und wenn Du 'außerhalb' auch weisst, wann Du das Teil nicht mehr benötigst, dann hat jedes Objekt eben einen 'Required'-Zähler (ähnlich dem Referenzzähler), Im Gegensatz zum RefCount zählst Du hier explizit. Das Objekt weiß, das es von zwei Systemen/Threads verwendet wird: Initial ist der Zähler also bei 2.

Wenn der Thread fertig ist, teilt er das dem Objekt mit (RequiredCount --), und wenn der Hauptthread oder wer auch immer fertig ist, macht er das gleiche.

Der Setter vom Zähler ruft Destroy auf, sobald RequiredCount = 0 ist.

Wer das Objekt behalten möchte, meldet dies per 'Require' an, welches einfach den Zähler hochzählt. Wenn man es nicht mehr benötigt, zählt man den Zähler runter.

Das ist ein einfache Regel, die selbst der dümmste Programmierer versteht.

Wobei ich das Interface verwenden würde, weil Grundkenntnisse sollte man dem Anwender schon zumuten
"Hey, ich caste das Interface jetzt mal ganz schnell in die konkrete Klasse und speicher' mir das ganze in einer TList".
Wird man ebensowenig abfangen können, wie "Hey, ich bügle mal 20 Nullen über die Instanz (mit MOVE), mal sehen, was passiert".

Wenn Du mit solchen Vollpfosten rechnen musst, dann bleibt Dir nur ein Manager und statt Objekten arbeitest Du mit einem Handle.
  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 06:48 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