Tehnici de implementare a concurentei în analiza si proiectarea ...
Tehnici de implementare a concurentei în analiza si proiectarea ...
Tehnici de implementare a concurentei în analiza si proiectarea ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Aceasta asemanare nu este <strong>în</strong>tâmplatoare (dupa cum nu este <strong>în</strong>tâmplator nici<br />
faptul ca operatiile care corespund variabilelor <strong>de</strong> conditie poarta acela<strong>si</strong> nume ca <strong>si</strong><br />
operatiile corespunzatoare semafoarelor) dar nici benefica. Prin urmare, extin<strong>de</strong>rea<br />
monitorului <strong>în</strong> aceasta maniera este caracterizata <strong>de</strong> acelea<strong>si</strong> <strong>de</strong>zavantaje ce<br />
caracterizeaza <strong>si</strong> semafoarele. Astfel, <strong>de</strong>oarece codul corespunzator coordonarii<br />
interactiunii concurente se implementeaza intercalat cu codul <strong>de</strong> <strong>implementare</strong> a<br />
functionalitatii operatiilor nu mai sunt respectate principiile izolarii <strong>si</strong> separarii<br />
codului <strong>de</strong> interactiune concurenta.<br />
De asemenea, este evi<strong>de</strong>nt mai dificil <strong>de</strong> <strong>de</strong>monstrat corectitudinea unei clase<br />
astfel implementate. Trebuie remarcat <strong>si</strong> faptul ca, <strong>în</strong> cazul <strong>în</strong> care variabilele <strong>de</strong><br />
conditie sunt publice (<strong>de</strong>ci sunt vizibile <strong>în</strong> afara monitoarelor <strong>în</strong> care au fost <strong>de</strong>finite)<br />
poate fi <strong>în</strong>calcat cu usurinta principiul care enunta faptul ca specificarea interactiunii<br />
<strong>în</strong>tre obiecte concurente trebuie sa fie realizata exclu<strong>si</strong>v <strong>în</strong> cadrul entitatii apelate.<br />
Asteptare conditionala. Conceptul <strong>de</strong> asteptare conditionala a fost introdus tot<br />
<strong>în</strong> scopul extin<strong>de</strong>rii monitoarelor pentru a putea fi mo<strong>de</strong>late <strong>si</strong>ncronizari conditionale<br />
inter-activitati. Acest concept a fost introdus <strong>de</strong> catre Kessels <strong>în</strong> anul 1977 [KES77]<br />
<strong>si</strong> este caracterizat <strong>de</strong> separarea <strong>si</strong>ntactica <strong>în</strong> cadrul monitorului a conditiilor <strong>de</strong><br />
<strong>si</strong>ncronizare:<br />
condition is ;<br />
În urma unei <strong>de</strong>claratii ca cea <strong>de</strong> mai sus se poate introduce <strong>în</strong>tr-una dintre<br />
operatiile monitorului linia <strong>de</strong> cod wait() ce are ca efect <strong>în</strong>târzierea<br />
executiei activitatii curente care a apelat operatia respectiva pâna <strong>în</strong> momentul<br />
verificarii conditiei data <strong>de</strong> . Prin aceasta metoda se pot <strong>de</strong>termina cu<br />
usurinta care sunt portiunile <strong>de</strong> cod ce mo<strong>de</strong>leaza <strong>si</strong>ncronizarea concurenta. Din<br />
nefericire <strong>si</strong> <strong>în</strong> acest caz riscul blocarii unei activitati sau al intrarii <strong>în</strong>tr-o <strong>si</strong>tuatie <strong>de</strong><br />
impas este la fel <strong>de</strong> crescut. De asemenea, nu poate fi <strong>de</strong>terminata activitatea care va<br />
fi executata <strong>în</strong> cazul <strong>în</strong> care sunt mai multe activitati blocate <strong>de</strong> aceea<strong>si</strong> conditie iar<br />
conditia este <strong>în</strong><strong>de</strong>plinita <strong>în</strong> momentul executiei unei alte activitati.<br />
Implementarea unei cozi limitate folo<strong>si</strong>nd monitoare extinse cu variabile <strong>de</strong><br />
asteptare conditionala se poate realiza <strong>în</strong> maniera <strong>de</strong> mai jos:<br />
class monitor Coada{<br />
. . .<br />
//<strong>de</strong>clararea tuturor proprietatilor <strong>si</strong> a operatiilor este<br />
//i<strong>de</strong>ntica cu cea din exemplul <strong>de</strong> <strong>implementare</strong> secventiala<br />
35