[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