[so] tema3: explicatii testul 3

adrian nistor adriannistorrr at yahoo.com
Sun Nov 26 21:15:58 EET 2006


--- Cristi B <cristib84 at yahoo.com> wrote:

> un thread executa Wait pe conditia q: Se va
> planifica un alt thread pentru executie dupa care
> threadul curent se va bloca la coada de asteptare a
> conditiei q.
> 
> Daca nu exista un thread de planificat, threadul
> asteapta pana apare unul ?

Nu.Se blocheaza la conditia pe care a facut wait.
"Thread de planificat" e insa si unul care e blocat 
in coada de entry-queue.


> Intreb ptr ca ma uit pe testul 3: la secunda 0 sunt
> 2 threaduri 3A si 3B care incearca sa faca
> operatiile Entry() apoi WaitCond(0) (ptr 3A) si
> Entry apoi WaitCond(1) (ptr 3B).
> 
> In cazul in care nu se asteapta un alt thread(deci
> nu se mai planifica nici unul) succesiunea
> evenimentelor este urmatoarea:
> 3A face Entry() si poate sa intre in monitor apoi
> asteapta la coada conditiei 0; 3B vrea sa faca
> Entry() si se blocheaza la entry queue; dupa care
> apare dead-lock...

Daca cand A vrea sa se blocheze la conditie, B
este deja in entry-queue, A il va planifica pe B.
Daca nu, inseaman ca B nu e inca in aceasta coada,
si A se blocehaza in coada de la conditia sa. Cand 
B va incerca sa intre, va vedea ca nimeni nu ruleaza
in monitor, deci va putea sa intre fara probleme,
fara dead-lock. 


> 
> Oare atunci cand se face Wait pe o conditie
> thread-ul care este deja in Monitor iese automat ?

Nu iese, ramane in monitor, dar e blocat. Invariantul
la monitoare nu este "un singur thread in monitor"
ci "un singur thread ce ruleaza in monitor".

Adica pot fi 10 threaduri blocate prin diverse cozi.
Regula e insa sa fie maxim unul care ruleaza.

> 
>  
> ---------------------------------
> Access over 1 million songs - Yahoo! Music
Unlimited.>
_______________________________________________
> so mailing list
> so at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
> 



 
____________________________________________________________________________________
Do you Yahoo!?
Everyone is raving about the all-new Yahoo! Mail beta.
http://new.mail.yahoo.com


More information about the so mailing list