18.04.2013 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!