[so] [SO][tema4] Întrebare Readers-Writers
Andrada Georgescu
andradaq at gmail.com
Mon May 17 18:55:44 EEST 2010
2010/5/17 Drutu Bogdan <bogdandrutu at gmail.com>:
> 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.
Cred că am înțeles, mulțumesc.
--
Andrada Georgescu
More information about the so
mailing list