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.

estrâng numarul <strong>de</strong> activitatii executate la un moment dat <strong>în</strong>tr-un obiect la una<br />

<strong>si</strong>ngura.<br />

Spre <strong>de</strong>osebire <strong>de</strong> majoritatea mecanismelor <strong>de</strong> specificare a interactiunilor<br />

concurente care respecta principiul izolarii, expre<strong>si</strong>ile <strong>de</strong> cale nu a<strong>si</strong>gura<br />

separareacodului <strong>de</strong> interactiune. Astfel, o expre<strong>si</strong>e <strong>de</strong> cale implementata <strong>în</strong>tr-o clasa<br />

parinte va fi sau mostenita sau rescrisa complet <strong>în</strong> clasele fiu, fapt ce conduce<br />

bine<strong>în</strong>teles la distrugerea modularitatii ierarhiilor <strong>de</strong> clase.<br />

Rutina <strong>de</strong> vitalizare (mecanisme cu control centralizat al interfetei).<br />

Limbajele <strong>de</strong> programare care implementeaza rutinele <strong>de</strong> vitalizare ca <strong>si</strong> mecanisme<br />

<strong>de</strong> specificare a <strong>concurentei</strong> furnizeaza anumite constructii specifice <strong>de</strong> coordonare a<br />

<strong>concurentei</strong> ([CAR90], [AME87]). În aceste constructii un mesaj receptionat <strong>de</strong> catre<br />

un obiect nu este interpretat automat <strong>de</strong> catre <strong>si</strong>stem ca <strong>si</strong> un apel <strong>de</strong> operatie. Acest<br />

mesaj este <strong>analiza</strong>t <strong>în</strong> cadrul rutinei <strong>de</strong> vitalizare urmând ca, <strong>în</strong> functie <strong>de</strong> starea<br />

obiectului, sa fie apelate operatiile corespunzatoare. Declararea claselor va contine o<br />

sectiune speciala, numita interface, un<strong>de</strong> sunt <strong>de</strong>scrise toate mesajele care pot fi<br />

receptionate <strong>de</strong> catre obiectele acestora.<br />

În general rutinele <strong>de</strong> vitalizare proceseaza un <strong>si</strong>ngur mesaj la un moment dat,<br />

fapt care <strong>de</strong>termina serializarea stricta a comportamentului obiectelor. Asa cum s-a<br />

aratat <strong>si</strong> <strong>în</strong> sectiunea prece<strong>de</strong>nta, pentru a se putea executa mai multe activitati<br />

concurente prin intermediul rutinelor <strong>de</strong> vitalizare este necesara prezenta unui<br />

mecanism suplimentar <strong>de</strong> initiere a <strong>concurentei</strong>. În cazul <strong>în</strong> care acest mecanism<br />

suplimentar este unul <strong>de</strong> tip fork-join atunci rutina <strong>de</strong> vitalizare poate utiliza comanda<br />

fork pentru a lansa concurent mai multe apeluri <strong>de</strong> operatii. De asemenea, rutina <strong>de</strong><br />

vitalizare poate <strong>de</strong>termina daca este executata la un moment dat o operatie<br />

incompatibila cu mesajul curent receptionat.<br />

În limbajele <strong>de</strong> programare orientate-obiect concurente care suporta rutine <strong>de</strong><br />

vitalizare sunt implementate instructiuni speciale pentru receptionarea <strong>si</strong> <strong>în</strong>târzierea<br />

tratarii mesajelor. O astfel <strong>de</strong> instructiune este <strong>de</strong> forma:<br />

receive {when },<br />

<strong>în</strong> care mesajul va fi tratat doar <strong>în</strong> momentul <strong>în</strong> care expre<strong>si</strong>a <br />

este a<strong>de</strong>varata. În <strong>implementare</strong>a unei cozi limitate folo<strong>si</strong>nd rutine <strong>de</strong> vitalizare am<br />

introdus o operatie noua, numita NrMaxElemente() care va returna numarul maxim <strong>de</strong><br />

49

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

Saved successfully!

Ooh no, something went wrong!