[so] Tema 3

Vlad Cananau vladk2k at gmail.com
Thu Feb 7 12:22:17 EET 2008


Sturzu Antonio Gabriel wrote:
> Salut!
>
> Citez din enuntul temei 3:
> Inainte de blocarea la Signaller Queue planificarea se
> va face astfel: Daca Waiting Queue nu e vida se va lua
> un thread din Waiting Queue si se va trezi, daca
> Waiting Queue e vida (ceea ce implica si ca coada de
> asteptare la conditia q era vida, altfel Waiting Queue
> ar fi avut cel putin un element) se va alege un thread
> din Signaller Queue (aceasta in mod sigur nu e vida
> deoarece il contine cel putin pe threadul care tocmai
> a facut signal) si se va fi planificat acesta.
>
> Cum poate SignallerQueue sa il contina pe thread-ul
> curent care a  facut signal daca el inca nu s-a blocat
> la aceasta coada avand in vedere ca el intai trebuie
> sa planifice pe cineva si abia dupa aceea sa se
> blocheze ?
> Asta ar insemna ca s-ar planifica pe el insusi ceea ce
> nu prea se poate.
>
>   
Raspunsul e simplu - daca faci ca mine si folosesti semafoare, 
thread-urile blocandu-se la acquire/wait, atunci, in cazul Signal & 
Wait, se incrementeaza SignallerQueue (ajunge la 1) si cand ar trebui sa 
se blocheze, el trece mai departe. Varianta 2, exista deja un thread 
care a facut signal si asteapta in coada, si trebuie sa ii dam drumul


More information about the so mailing list