[so][tema 3]Completare enunt

Vlad Cananau vladk2k at gmail.com
Tue Dec 18 11:44:15 EET 2007


Mie mi s-a parut foarte clar ca intre Enter si Wait/Signal/Leave
(Signal numai in cazul Signal & Wait) un thread ruleaza singur
singurel

On Dec 18, 2007 11:13 AM, Marius Nicolae <mariusn007 at gmail.com> wrote:
> Salut,
>
> Se poate sa gresesc, pentru ca pana la urma nu am inteles ce inseamna
> ca monitorul "nu este liber".
>
> Din pdf-uri am inteles ca numai un singur thread poate rula o metoda a
> monitorului la un moment dat. Adica daca intr-un thread s-a inceput
> rularea metodei Signal, nici un alt thread nu mai poate rula un
> Wait,Signal,Enter,Leave pana nu se termina metoda Signal in primul
> thread.
>
> Din enunt se intelege ca monitorul este liber abia atunci cand un
> thread il cedeaza si planifica pe altcineva. Deci daca faci cum scrie
> in documentatie o sa iasa o mare varza.
>
> Problema de care vorbeam in mailul anterior se refera la urmatorul scenariu:
> La Readers/Writers, un reader intra in monitor, eventual asteapta un
> OK_TO_READ, apoi iese din monitor si apoi incepe sa citeasca. Dupa ce
> termina de citit intra din nou in monitor, semnaleaza OK_TO_READ si
> face Leave.
>
> Mi se pare cam ciudat sa nu poata intra in monitor, sa citeasca si
> apoi sa iasa. Trebuie sa faca:
> enter
> wait
> leave
> read
> enter
> signal
> leave
>
> in loc de varianta mai intuitiva
> enter
> wait
> read
> signal
> leave
> ar fi posibila numai daca enterul ar planifica pe altcineva atunci
> cand el se blocheaza, altfet e nevoie ca un alt thread sa faca leave
> pentru a il trezi din enter (sper ca nu e prea vag ceea ce spun).
>
> Ideea e ca in documentatie nu se vorbeste nicaieri de o operatie
> enter, numai de wait, signal si return deci confuzia mea e cauzata de
> neconcordanta dintre enunt si documentatie.
>
> Eu am facut cum zice in enunt, cu toate ca e nevoie de un cod mai
> ciudat la readers/writers, dar nu as fi putut face ca in documentatie
> atata timp cat mi se cere o operatie Enter. Deci pana la urma problema
> semnalata in mailul anterior era doar o confuzie.
>
> Numai bine,
> Marius Nicolae
>
> _______________________________________________
> so mailing list
> so at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>



-- 
___
Vlad Cananau


More information about the so mailing list