[eaf] RE: [eaf] Referencia számlálás

  • From: "Podoski Peter" <pody@xxxxxxxxxxx>
  • To: <eaf@xxxxxxxxxxxxx>
  • Date: Thu, 8 May 2008 00:50:29 +0200

Szia Hijaszu!


Érdekes felvetés, de tudomásom szerint menedzselt memóriakezelésű
környezetben ilyen alacsony szintű felügyelést nem lehet csinálni. Amikor
C++-ban egy auto_ptr-rel burkolt hivatkozás kikerül a scope-ból, akkor
determinisztikusan meghívódik a burkoló destruktora, vagyis le tudod kezelni
ezt az eseményt. A Garbage Collector ugye ezzel szemben indeterminisztikusra
van tervezve, pont azért, mert ha nem indokolt, akkor nem törődik a memória
felszabadításával. (a számítási teljesítmény javítása miatt)

Az én ötletem az lett volna, hogy elindulok az IDisposable interfész
irányába, és a Dispose() metódusba valamilyen globális osztálynak szólok,
hogy az objektum felszabadította magát. Csakhogy ez nem referenciaszámlálás,
hanem explicit fel- és leregisztráció valami központi nyilvántartásba, a
célod pedig nem ez volt, ez így túl "bürokratikus". :) 
Jóllehet C#-ban is meg tudsz adni destruktort (vagy akár Finalize()-ot), de
amennyiben egy központi (statikus) helyen mindig ott csücsül egy referencia
a számlált objektumra, azt sohasem fogja összegereblyézni a GC.

Ha magasabb szinten képzelted a dolgot, akkor viszont ajánlható egy design
pattern a problémára. Mert ha pl. az asztali alkalmazás User Interface-én
keresztül globálisan értesülni akarsz különféle modellbeli eseményekről,
akkor az MVC/P architekturális tervminta felhasználható ilyen célra.

Szabad megtudni, milyen megfontolásból akarsz saját referencia számlálót
írni?

pody

-----Original Message-----
From: eaf-bounce@xxxxxxxxxxxxx [mailto:eaf-bounce@xxxxxxxxxxxxx] On Behalf
Of Zimler Attila Tamas
Sent: Wednesday, May 07, 2008 9:32 PM
To: eaf@xxxxxxxxxxxxx
Subject: [eaf] Referencia számlálás

Sziasztok,

Van valakinek ötlete hogyan lehetne implementálni referencia számlálást
C# nyelven? :)
Hasonlóra gondolok, mint a C++-ban az auto_ptr :)

H.

--
Az eletben vannak szabalyok
Nehanyat meg lehet kerulni, a tobbit pedig meg lehet szegni
(The Matrix)

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: OpenKeyServer v1.2
Comment: Extracted from belgium.keyserver.net

mQGiBEE/HTYRBACInacMGc8B/lkX3CXh5D9wUDlmza4hoatNZjJmWNnPWC9c0h2V
Pi9zYJ1bVqeUnNDzCRpovPdwrswWvb9WpVOS0A7TafzWxCYud6gN8g5KiC7cSuJV
cxI0uv3jWSjUkLnECqTpm9piM4WptXrdFLxUyrKPu+Nl82QSjfdbB+8xXwCg+rWO
KeOZZGGGIYWu+rZ0M/MqyCUD/jqQVc7alF8+5y//zNDml3THTc3ljK8CLcHxFv6F
uADmvHSePRTR1ACBV3dTxL8awvanRsXC25LOuYgM1hF9RRwof59xNtXVttvo724b
FDR+oRDVKyoEm6Istfn9xbbNqRqPfk83SHvect/hlHsfgaTBKd+IRAEkbMIdRin/
E45fA/0bzklqLGj4a8qSxMMvZ1Ib+2RmH5I6o9o33FY3Nmc7IEXJizyTyQaASYCx
ldjuRmfWSOP3gQRrH5owuZq5KBCC/PNMNnUsA4noFmvIilA/9UYqMtQ0BNr+miIM
9/LV70ZbBHVpDLjb2baMjbKrmCFf9rjlc17fFsWk5ZJuE3/UxLQrWmltbGVyIEF0
dGlsYSBUYW3DoXMgPGhpamFzenVAaGxmc2xpbnV4Lmh1PohXBBMRAgAXBQJBPx02
BQsHCgMEAxUDAgMWAgECF4AACgkQ+3OFVYni0PSysACffD6VDtoer3aBe8Gpvn8e
gwiNNH8AmwcmBIrZeCOeobIuZZp3CCOgQblIuQENBEE/HTkQBACKNzv7gS0fgeiO
AMoss2bbO7X9GuO3ufc3+zx2yGV7SvYAuyWLOSMhs1ZYBVp6IawDY88zEx81oxRj
Jd4zO8h/3BI9cmjZ4NAmdv7lWjTs0I0ijFnemcFQaffxN8vIB9DqA4oyJ0A/bS7J
0E/i13sr7hRgB6NZbpy4PSSkczggvwADBQP8D3eakqeJHf1yLmw1XmQVDxHLxtrI
VL0TShFEfMGU/MLfKpcmrd43EsSondsNNm8jv4b9Y/Wgc8XPQQrfPodC5mKt8mQC
F/ovWBFs46YvhS5pojQmp6i9octTWw2OqVn3QgrBFqm4QvayLE9wRLm/xgaFApVI
4RiOOEA6SidURGCIRgQYEQIABgUCQT8dOQAKCRD7c4VVieLQ9HoZAJ4xR5Y1qlnC
LTn1GkbEW0Va+72EqwCfQTP37ylZGrvpYnFoewBIMuLFHM8=
=K0/l
-----END PGP PUBLIC KEY BLOCK-----




Other related posts:

  • » [eaf] RE: [eaf] Referencia számlálás