[so] [SO][tema4] Întrebare Readers-Writers

Drutu Bogdan bogdandrutu at gmail.com
Mon May 17 18:45:36 EEST 2010


2010/5/17 Razvan Deaconescu <razvan.deaconescu at cs.pub.ro>:
> On Mon, 2010-05-17 at 18:25 +0300, Andrada Georgescu wrote:
>> 2010/5/17 Razvan Deaconescu <razvan.deaconescu at cs.pub.ro>:
>> > On Mon, 2010-05-17 at 00:33 +0300, Andrada Georgescu wrote:
>> >> Salut!
>> >>
>> >> Am o nedumerire la Readers-Writers:  "la un moment dat de timp, cel
>> >> mult un thread poate executa cod non-monitor". Acest lucru nu implică,
>> >> de fapt, că nu vom avea mai mulți cititori în paralel, ci, eventual,
>> >> doar mai mulți cititori în coada Waiting?
>> >
>> > Codul monitor se refera la codul specific monitorului, adica
>> > implementarea functiei Enter, Exit, Wait etc. Nu este vorba de codul
>> > care se executa _dupa_ ce ai achizitionat monitorul.
>>
>> Da, știu asta, eu mă refeream la codul NON-monitor, ceea ce execută
>> thread-urile propriu-zis (de exemplu cititorii citesc). Dar, cum
>> monitorul trebuie să asigure că la un moment dat cel mult un thread
>> execută astfel de cod (non-monitor), practic cititorii nu vor citi
>> niciodată efectiv în paralel (pentru că ar însemna că cel puțin 2
>> thread-uri ar executa cod non-monitor), deși în problema clasică li se
>> permitea asta. Așa se întâmplă?

Nu se intampla asa. Tu nu trebuie sa faci citirea in timp ce detii
monitorul, tu cu ajutorul monitorului faci doar sincronizari, adica tu
vei trece prin monitor vei verifica conditia (prioritatea pe
scriitori) si dupa eliberezi monitorul ca sa poata si alti cititori sa
intre si sa citeasca.
Deci citirea nu se va face in cod "non-monitor".
La iesire vei intra din nou in monitor si vei face din nou
modificarile in monitor pentru a stii ca a iesit acel cititor.

>
> Bogdan, Cristina, puteti raspunde voi, va rog?
>
> Nu am idee ce inseamna acea precizare referitoare la codul
> "non-monitor". Chiar mi se pare gresita, dar poate nu inteleg eu cum
> trebuie.
>
> Razvan
>
> _______________________________________________
> http://elf.cs.pub.ro/so/wiki/resurse/lista-discutii



-- 
Bogdan.


More information about the so mailing list