[so] [Tema 4]Intrebare 2

Alex Gorunescu algorunescu at yahoo.com
Tue May 3 16:03:32 EEST 2011


>From: Stefan Munteanu <stef8803 at gmail.com>

>To: Sisteme de Operare <so at cursuri.cs.pub.ro>
>Sent: Tue, May 3, 2011 3:10:55 PM
>Subject: Re: [so] [Tema 4]Intrebare 2

>2011/5/3 Alex Gorunescu <algorunescu at yahoo.com>:
>>
>> Pentru partea a doua nu suntem obligati sa facem sincronizarile doar prin
>> monitor nu ? Sunt anumite lucruri care nu vad cum s-ar putea sincroniza prin
>> monitor.
>>
>Sincronizarile trebuie facute doar prin monitor si variabilele de
>conditie din acesta. In plus o sa va mai trebuiasca si niste contoare
>auxiliare
>
>Stefan

Pai atunci avem situatia urmatoare. Printre contoarele auxiliare avem si un 
contor pentru scriitori waiting deoarece trebuie sa asiguram prioritatea 
scriitorilor si un cititor tre sa stie ca are scriitori waiting. Daca contorul 
de cititori activi il actualizezi dupa ce intri in monitor (cand practic 
pornesc) si astfel asiguri sincronizarea accesului la el, pe asta nu prea ai cum 
sa-l sincronizezi. Trebuie incrementat de catre fiecare scriitor inainte sa 
intre in monitor pentru ca dupa ce intra poate ramane blocat in coada de Entry 
intercalat cu alti cititori si trebuie sa stie aia ca asteapta si el acolo sa-i 
dea prioritate. Drept urmare avem ceva de genul:

void StartScrit(Monitor *m)
{
    writers_waiting++;
    Enter(m);
.......

Cum nu avem voie sa facem sincronizari externe monitorului, cum sincronizam 
accesul concurent al mai multor fire de executie scriitor la contorul ala ? 

_______________________________________________
http://elf.cs.pub.ro/so/wiki/resurse/lista-discutii
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20110503/9c692ea0/attachment.htm>


More information about the so mailing list