Re: TECH:PRG: (bylo Re: UCT: Narocnost zpracovani)
>>>>> "OB" == Oto Buchta <tapik@neo.cz> píše:
OB> Nakolik toho o C a C++ vim, tak automatický Garbage collector a
OB> softreferences (reference na objekty, ktere při nedostatku místa
OB> na disku mohou být GC odstraněny) tak nějak není implementované
OB> :-)
Je potřeba se poněkud myšlenkově odvázat od prostředí, kde nejde rozumně
udělat leccos, není-li to tam již zadrátováno, protože chybí i tak
základní nástroje užitečné pro přidávání nových rysů, jako je alespoň
rudimentární podoba maker či vícenásobná dědičnost. :-| Použití garbage
collectoru v podobě knihovny v C celkem nic nebrání, s C++ je to trochu
složitější, ale při troše disciplíny by to také mělo být schůdné.
Hojně užívaným garbage collectorem pro C je boehm_gc. Dívám se, že má
i nějakou podporu pro C++.
V C je to založeno na náhražce mallocu, čehož lze dosáhnout
i automaticky (#defina malloc GC_malloc, příp. další #defines pro
variace na malloc). V C++ to nabízí nějaké třídy, které lze podědit a
instance těchto tříd jsou pak sbíratelné, k tomu je však ještě nutná
určitá obezřetnost na jiných místech.
Co se týče soft references, tak na ty snad v C (resp. C s GC knihovnou)
není potřeba vůbec žádná sofistikovaná podpora -- stačí obalit malloc
(resp. GC_malloc) něčím, co v případě selhání alokace (resp. při
nedostatku paměti z hlediska efektivního fungování GC) požádá správce
soft references o zahození příslušných dat a zkusí alokaci ještě jednou,
ne?
Ale to už jsem asi skoro off-topic, že. :-)
Milan Zamazal
--
It's amazing how much better you feel once you've given up hope.
(unknown source)
-------------------------- ucto-dev-l@pinknet.cz ------------------------
Konference o vyvoji ucetnictvi http://ucto.linux.cz/
Partial thread listing:
- Re: TECH:PRG: (bylo Re: UCT: Narocnost zpracovani), (pokračuje)