[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