Documente Academic
Documente Profesional
Documente Cultură
Programare concurent
Proiecte
Problema Productor-Consumator.
Jocul vieii.
Problema Cititori-Scriitori.
2
fiecare imagine a unei cartele se adaug caracterul '$', iar orice succesiune '**' este
nlocuit cu '!'.
Soluia const n a executa concurent urmtoarele procese:
- procesul Citeste citete de la intrare cte un ir de n caractere, l completeaz cu
'$' i transmite irul cart1 astfel obinut procesului Temp;
- procesul Temp nlocuiete succesiunile '**' cu '!', aa cum cere problema, iar
irul de caractere cart2 rezultat este transmis procesului Scrie;
- procesul Scrie tiprete irul de caractere cart2 primit de la procesul Temp.
Problema alocrii resurselor. Exist n obiecte. Mai multe persoane doresc n mod
repetat s ia un numr aleator de obiecte, pe care s le foloseasc i apoi s le returneze.
(Manna, Pnueli) Scriei un program concurent care s calculeze Cnk folosind dou
procese concurente care calculeaz succesiv produsele pariale ale lui n(n1)...(n-k+1), respectiv ale lui 12...k, fcnd sincronizarea ntre ele astfel
nct al doilea proces s efectueze i raportul acestor valori atunci cnd rezultatul este
ntreg.
Procesul Numarator va transmite procesului Numitor succesiv valorile
v=n,n-1,...,n-k+1; procesul Numitor calculeaz la fiecare pas ctul cnk dintre
valoarea primit i valorile 1,2,...,k.
Fie S,T dou mulimi cu ns i respectiv nt elemente. S se scrie un program
concurent care s nscrie n S cele mai mici ns, iar n T cele mai mari nt elemente din
ST. Mulimile S i T sunt memorate n vectorii s i t de dimensiuni ns i nt.
La fiecare pas, procesul PS calculeaz maximul valorilor din S i l transmite
procesului PT. Acesta calculeaz minimul valorilor din T i, dac valoarea primit este
mai mare dect minimul, trimite napoi minimul (se face interschimbare).
Se consider n fumtori, fiecare avnd ntr-o cantitate nelimitat unul dintre
produsele necesare fabricrii unei igri: hrtie, tutun i chibrituri. Un vnztor le pune
la dispoziie dou dintre produsele menionate. Persoana care are produsul (obiectul) ce
lipsete le ia, i fabric igara i o fumeaz. Abia apoi vnztorul poate oferi alte dou
dintre cele 3 obiecte etc.
Problema EmitorReceptori. Un emitor emite succesiv n mesaje, fiecare dintre
ele care trebuind s fie recepionat de toi cei nrec receptori nainte ca emitorul s
transmit mesajul urmtor (de exemplu confirmare de primire cu Exchanger).
S se rezolve problema EmitorReceptori n ipoteza c emitorul este grbit,
adic emite mesajul numai acelor receptori care la momentul emisiei sunt gata s l
primeasc; totui, se cere ca cel puin un receptor s primeasc mesajul.
O metod de nmulire concurent a dou matrici A i B de ordin n se bazeaz pe
faptul c produsul lor se poate scrie ca suma dup k=1,...,n a matricilor
Colk(A)Link(B) unde Colk(A) este coloana k a lui A, iar Link(B) este linia k a lui
B. Elementelor matricii rezultat C li se ataeaz cte un proces. Pe linii sunt pompate
succesiv coloanele matricii A, iar pe coloane sunt pompate succesiv liniile matricii B.
3
Fiecare proces ataat unui element al lui C primete de la elementul de deasupra i de la
cel din stnga dou valori, al cror produs l adaug valorii sale de baz (ce este iniial
egal cu 0) i apoi transmite mai departe n jos, respectiv la dreapta, cele dou elemente
primite.
Babuini ce traverseaz un canion. Peste canion trece o frnghie suficient de solid
s in orici babuini care merg n aceeai direcie, dar nu doi care merg n direcii
contrare.
- pentru fiecare babuin se alege o direcie;
- se alege un numr de babuini care merg spre stnga, apoi un numr de babuini
care merg spre dreapta etc.
Parcul de distracii. Exist n mainue i p persoane. Fiecare persoan ateapt (la
rnd) o mainu liber, apoi se urc n ea, ciocnete k alte mainue i apoi coboar.
nloc locuri, parcurge o traiectorie circular pe care se afl np pasageri care urc i