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.

Rutinele autonome reprezinta o exten<strong>si</strong>e a <strong>de</strong>clararii proceselor <strong>în</strong>tr-un context<br />

orientat-obiect. Astfel, <strong>în</strong> momentul <strong>în</strong> care un obiect este creat sunt lansate una sau<br />

mai multe activitati care executa anumite operatii ale acestuia. Aceste operatii poarta<br />

numele <strong>de</strong> rutine autonome. În functie <strong>de</strong> limbaj operatiile vor fi lansate automat<br />

imediat dupa crearea obiectului sau vor fi necesare apeluri explicite ale acestora.<br />

Rutinele autonome sunt prezente mai ales <strong>în</strong> limbaje <strong>de</strong> programare care utilizeaza<br />

biblioteci <strong>de</strong> clase speciale pentru exprimarea <strong>concurentei</strong>. În astfel <strong>de</strong> limbaje exista<br />

o clasa care <strong>de</strong>fineste activitatile care vor fi lansate <strong>în</strong> paralel, iar ele pot fi reutilizate<br />

<strong>si</strong>/sau rescrise prin intermediul mostenirii. Exista <strong>de</strong> asemenea <strong>si</strong> limbaje <strong>de</strong><br />

programare <strong>în</strong> care este permisa etichetarea operatiilor unei clase ca fiind rutine<br />

autonome. De<strong>si</strong> rutinele autonome par a fi mai bine integrate <strong>în</strong> paradigma orientata-<br />

obiect <strong>de</strong>cât procesele, ele sufera <strong>de</strong> acelea<strong>si</strong> <strong>de</strong>zavantaje (favorizeaza distrugerea<br />

<strong>în</strong>capsularii <strong>si</strong> a modularitatii).<br />

O forma speciala <strong>de</strong> rutina autonoma este rutina activa. Aceasta rutina este<br />

lansata <strong>în</strong> executie <strong>în</strong> momentul creerii obiectului <strong>si</strong> ea "supervizeaza" executia<br />

celorlalte operatii ale obiectului. Astfel, rutina activa - numita <strong>si</strong> corp-ul clasei sau<br />

rutina <strong>de</strong> vitalizare (life routine) - trateaza toate mesajele (sau apelurile <strong>de</strong> operatii)<br />

lansate catre obiect. Daca rutina activa î<strong>si</strong> <strong>în</strong>ceteaza activitatea atunci obiectul nu mai<br />

poate fi utilizat. În general codul unei astfel <strong>de</strong> rutine contine un ciclu <strong>în</strong> care sunt<br />

receptionate toate mesajele transmise catre obiect <strong>si</strong>, <strong>în</strong> functie <strong>de</strong> anumite<br />

constrângeri <strong>de</strong> <strong>si</strong>ncronizare, lanseaza <strong>în</strong> executie operatiile obiectului<br />

corespunzatoare mesajelor sau stocheaza aceste mesaje <strong>în</strong>tr-o coada <strong>de</strong> asteptare.<br />

Simpla existenta a rutinei active <strong>în</strong>tr-o clasa nu poate duce <strong>în</strong>sa la executarea<br />

<strong>de</strong> activitati concurente. Concurenta poate fi obtinuta prin transmiterea a<strong>si</strong>ncrona a<br />

unui mesaj <strong>de</strong> catre un obiect apelant sau prin utilizarea <strong>în</strong> cadrul rutinei active a unui<br />

mecanism din cele amintite anterior.<br />

Acest mecanism <strong>de</strong> specificare nu garanteaza separarea codului <strong>de</strong><br />

<strong>si</strong>ncronizare <strong>de</strong> codul <strong>de</strong> <strong>implementare</strong> a functionalitatii (principiul al treilea enuntat<br />

<strong>în</strong> sectiunea prece<strong>de</strong>nta). Implicatiile acestui fapt vor fi discutat <strong>în</strong> <strong>de</strong>taliu <strong>în</strong> capitolul<br />

urmator. Aici vom aminti doar ca nesepararea codului <strong>de</strong> <strong>si</strong>ncronizare conduce la<br />

impo<strong>si</strong>bilitatea rescrierii unei rutine active a unei super-clase <strong>în</strong> <strong>de</strong>scen<strong>de</strong>ntii sai fara a<br />

cunoaste codul <strong>de</strong> <strong>implementare</strong> al acesteia (prin urmare, <strong>de</strong>termina distrugerea<br />

<strong>în</strong>capsularii).<br />

23

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

Saved successfully!

Ooh no, something went wrong!