[OSy] join_timeout() s 0 timeoutem

Lukáš Kopenec lukaskopenec at seznam.cz
Wed Oct 31 19:25:59 CET 2007


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).

"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 ?"

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ý.

Díky moc
Lukáš Kopenec

----- Original Message ----- 
From: "Dalibor Straka" <dast at panelnet.cz>
To: "Operating Systems Course" <osy at dsrg.mff.cuni.cz>
Sent: Wednesday, October 31, 2007 6:53 PM
Subject: Re: [OSy] join_timeout() s 0 timeoutem


> On Wed, Oct 31, 2007 at 06:39:13PM +0100, Katerina Opocenska wrote:
>> Dobry den a ahoj,
>>
>> predem se omlouvam za asi hloupy dotaz, ale chtela bych, aby mi veci 
>> sedely a ne jen, aby to nejak zbehlo :-).
>>
>> Jde o test Thread1, ve kterem se vyskytuje toto:
>> result = thread_join_timeout (thread_b, 0);
>>
>> V zadani join_timeout() mame:
>> "Varianta timeout ceka na ukonceni vlakna nejdele usec mikrosekund"
>>
>> V tomto pripade tedy ceka NEJDELE 0 mikrosekund, coz bych oznacila 
>> ekvivalenti vyrazu "neceka".
>>
>> Tedy prijde mi spravne, kdykoliv timeout = 0 (a identifikace vlakna je 
>> platna), tak muze join_timeout() vratit okamzite ETIMEOUT, protoze pred 
>> koncem intervalu delky 0 se opravdu nelze konce zadneho vlakna "dockat".
>>
>> Na druhou stranu vidim, ze takto to byt nemuze, jelikoz by v testu nikdy 
>> neskoncil okolni cyklus vedouci ke kyzenemu "Test passed".
>>
>> [V momente, kdy navic thread_b dobehne, uz neni platna ani jeho 
>> identifikace v join_timeout(), jelikoz uz toto vlakno neni (a nikdo na 
>> nej necekal, takze opravdu neni ani jako zombie) a tedy opet se nevrati 
>> EOK, ale EINVAL.]
>>
>> Za jakekoliv osvetlujici reakce predem moc dekuji,
>>
>
> Posixova vlakna se podle manualove stranky chovaji takto
>
>    When a joinable thread terminates, its memory resources (thread
>    descriptor and  stack)  are  not  deallocated  until  another
>    thread  performs  pthread_join  on  it. Therefore, pthread_join
>    must be called once for each joinable thread created to avoid
>    memory leaks.
>
> -- Dalibor Straka
>
> _______________________________________________
> OSy mailing list
> OSy at dsrg.mff.cuni.cz
> https://dsrg.mff.cuni.cz/mailman/listinfo/osy
> 





More information about the NSWI004 mailing list