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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

espectivei operatii a luat sfâr<strong>si</strong>t. Se poate spune ca <strong>în</strong> cazul acestor tipuri <strong>de</strong> mo<strong>de</strong>le<br />

nu exista concurenta interna.<br />

Mo<strong>de</strong>lele cu obiecte cva<strong>si</strong>-concurente sunt caracterizate <strong>de</strong> faptul ca obiectele<br />

pot <strong>de</strong>tine mai multe fire <strong>de</strong> executie, <strong>în</strong>sa numai unul dintre acestea este activ la un<br />

moment dat. De asemenea, exista po<strong>si</strong>bilitatea ca la un moment dat firul <strong>de</strong> executie<br />

activ sa fie blocat <strong>si</strong> sa se realizeze activarea unui alt fir <strong>de</strong> executie aflat <strong>în</strong> asteptare.<br />

Mo<strong>de</strong>lele cu obiecte concurente sunt cele "i<strong>de</strong>ale", ele permitând existenta a<br />

mai mult <strong>de</strong> un fir <strong>de</strong> executie <strong>în</strong> interiorul unui obiect. Firele <strong>de</strong> executie pot fi create<br />

atât implicit cât <strong>si</strong> explicit. Cele implicite sunt create <strong>în</strong> momentul receptionarii unui<br />

mesaj, când <strong>în</strong> cadrul noului fir <strong>de</strong> executie este executata operatia ceruta <strong>de</strong> acesta.<br />

Crearea explicita <strong>de</strong> fire <strong>de</strong> executie se realizeaza prin intermediul asa-numitelor<br />

mecanisme <strong>de</strong> initiere a <strong>concurentei</strong>. Majoritatea mo<strong>de</strong>lelor obiect pentru concurenta<br />

propun crearea implicita a firelor <strong>de</strong> executie. Mo<strong>de</strong>lele care folosesc cea <strong>de</strong>-a doua<br />

varianta utilizeaza mecanisme preluate din limbajele <strong>de</strong> programare procedurala.<br />

Asa cum am aratat, obiectele comunica <strong>în</strong>tre ele prin intermediul transmiterii<br />

<strong>de</strong> mesaje. Din punct <strong>de</strong> ve<strong>de</strong>re al sursei mesajului interactiunea (comunicarea) poate<br />

fi unidirectionala (fara primirea unui raspuns) sau bidirectionala (obiectul caruia îi<br />

este <strong>de</strong>stinat mesajul raspun<strong>de</strong> mesajului obiectului sursa). În acest ultim caz se pune<br />

problema daca obiectul sursa asteapta raspunsul sau î<strong>si</strong> continua activitatea, urmând a<br />

lua <strong>în</strong> con<strong>si</strong><strong>de</strong>rare raspunsul <strong>în</strong>tr-o faza ulterioara.<br />

Din perspectiva obiectului <strong>de</strong>stinatie, interactiunea cu obiectul sursa este<br />

privita prin prisma acceptarii mesajului transmis <strong>de</strong> acesta <strong>si</strong> a modalitatii <strong>în</strong> care se<br />

realizeaza acceptarea. Daca interactiunea dintre obiecte este controlata direct <strong>de</strong> catre<br />

<strong>si</strong>stem, fara a se specifica explicit, prin mecanisme oferite <strong>de</strong> limbaj, constrângeri<br />

privind aceasta interactiune, mo<strong>de</strong>lul este cu control extern. Urmatoarea categorie<br />

este aceea a mo<strong>de</strong>lelor cu control mixt, <strong>în</strong> care responsabilitatea coordonarii<br />

interactiunilor <strong>în</strong>tre activitatile concurente ale obiectelor este împartita <strong>în</strong>tre <strong>si</strong>stem <strong>si</strong><br />

impementarea obiectelor respective. În fine, din cea <strong>de</strong>-a treia categorie fac parte<br />

mo<strong>de</strong>lele cu control reflectiv, <strong>în</strong> care constrângerile <strong>de</strong> <strong>si</strong>ncronizare sunt exprimate cu<br />

ajutorul unei meta-clase.<br />

Sectiunile 3.3 <strong>si</strong> 3.4 contin <strong>de</strong>scrierile <strong>de</strong>taliate ale mecanismelor <strong>si</strong><br />

primitivelor <strong>de</strong> limbaj utilizate <strong>în</strong> programarea orientata-obiect concurenta pentru<br />

18

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

Saved successfully!

Ooh no, something went wrong!