On Thursday 19 of February 2009 12:53:04 Podlesak Kamil wrote:

> Samozrejme, je nutne ten casovac nejak ukoncit, treba zavolanim stop().
> Musi preci vedet, ze ma skoncit - sam si to nevymysli.

Iste. Oznamil by mu to destruktor v MyClassSlave.

> Destruktor (finalizer, etc) by zde vubec nepomohl.

V C++ ano, za podmienky, ze by nebola ta hierarchia class vytvarana pomocou 
new(). Vychadzam z nasledovneho predpokladu:

Class C2 {
        Timer t;
        ~C2() {
                t.stop();
        }
}

Class C1 {
        Class c2;
};

main() {
        {
                C1 c1;
        }
        // tu by sa automaticky zavolal t.stop() a vsetko by sa vyhodilo z 
pamati
}

> Je potreba mit na pameti, jak funguje casovac - nekde v pozadi je specialni
> vlakno, ktere drzi referenci na ten casovac (a tedy na vsechny ty vase
> objekty). Dokud ji drzi, neprovede garbage collector uvolneni.
>
> Samozrejme, v C++ si zivotni cyklus objektu ridite sam a tedy muzete v
> libovolnem okamziku rict, ze objekt znicite. Nemusite se ohlizet na to, ze
> ho nekdo jiny (casovac, v tomto pripade) pouziva. Pokud ho bude pouzivat i
> nadale, tak mate pekny segmentation fault (nebo nejakou jinou veselou
> udalost).

To sa v horeuvedenom pripade nestane.


> Kazdoapdne: v Jave (a vsech jazycich pouzivajicich model "referenci") je
> objekt je znicen az v okamziku, kdy je to zcela bezpecne protoze ho nikdo
> nepouziva.

Ok, dakujem za rady, zariadim sa podla toho. Len mi prislo lepsie sa opytat, 
nez rozvrtam kus kodu s neistym vysledkom.

-- 
Dusan

Odpovedet emailem