[OSy] join_timeout() s 0 timeoutem
Petr Tuma
petr.tuma at dsrg.mff.cuni.cz
Wed Oct 31 19:40:06 CET 2007
Dobry den,
> To jsou ale POSIX vlákna, ze zadání tohle chování, dle mého, neplyne. A když
> si vzpomenu na reakci doc. Tůmy na jeden z předchozích příspěvků, tak bych
> se zas přiklonil k tomu, co popisovala Katka (timeout 0 -> nečeká se).
Pojdme se na to podivat jeste jednou.
Test thread 1 vytvori dve vlakna, obe neco relativne nezavisle na sobe
delaji. Test mezitim zkousi delat join stridave na obe vlakna, ale na
zadne neceka. Pokud join vrati, ze vlakno skoncilo, test si to
zapamatuje, az skonci obe vlakna, uspesne dobehne i test.
Kdybychom pouzili vyklad z predchoziho mailu (timeout 0 znamena nejen ze
se neceka na ukonceni vlakna, ale take ze se join hned vrati bez ohledu
na to, v jakem je joinovane vlakno stavu), tenhle test by nemohl nikdy
skoncit.
Je tedy jeste jina moznost, jak definovat chovani funkce join v pripade,
ze nema cekat, aby presto test mohl skoncit ?
> "Kdyz koukate na popis thread_kill a thread_join, ke kteremu reseni byste
> se spis priklonil ? Jak a kdy by se mazalo vlakno, kdyby po kill zustalo
> v nejakem stavu, jaky popisujete ?"
Ted mi uplne neni jasne, jak si toto spojujete s timeoutem u join ?
> Mohl bych tedy poprosit někoho ze zadávajících, jestli by nám tenhle bod
> vysvětlil. Na hypotézy mi příjde příliš důležitý.
Prijde mi, ze je to docela jasne :-) predstavte si, ze jste kolegovi
slibil, ze ho vyzvednete po praci, ale ze pokud v praci jeste neskonci
ve chvili, kdy ho budete vyzvedavat, tak na nej nebudete cekat. Vas
kolega se hluboce zamysli a rekne: no jo, ale kdyz na me nebudes vubec
cekat, tak to znamena, ze i kdybych skoncil vcas, tak me nevyzvednes. Co
mu odpovite ? :-) ...
Petr Tuma
More information about the NSWI004
mailing list