Sunteți pe pagina 1din 3

1

Programare concurent
Proiecte

Problema Productor-Consumator.

Problema Productor-Consumator (generalizare): productorul ncearc s pun


pe band cel mult np obiecte, iar consumatorul ncearc s ia de pe band exact nc
obiecte (lungimea benzii este cel puin np+nc-1).
Problema Productor-Consumator cu mai muli productori i mai muli
consumatori.
Variant: consumatorul ia doar dac banda este plin i/sau productorul pune
numai dac banda este vid.

Jocul vieii.

Problema filozofilor chinezi. Varianta: cu ncercri euate.

Problema Cititori-Scriitori.

Problema Cititori-Scriitori cu prioritate pentru scriitori (dac nimeni nu are acces


la carte i att un cititor ct i un scriitor vrea s acceseze cartea, va avea prioritate
scriitorul.
Generarea numerelor prime.
- cu conduct de canale;
- procesele i aleg cte un interval din 2..max i lucreaz pe ele (programare
paralel);
- procesele au un contor comun ce parcurge 2..max i este incrementat sub excludere
reciproc; fiecare proces preia valoarea curent a contorului i verific dac este
numr prim.

Ceasul detepttor al lui Hoare.


Varianta: conduct de canale n care P0 pompeaz periodic valoarea curent a
timpului.

Ordonarea cresctoare a elementelor unui vector.


La fel ca la generarea numerelor prime. Dac procesele P1,...,Pk au memorate
n ordine cresctoare elementele a1,...,ak, se citete ak+1 i este transmis lui P1. P1 i
transmite lui P2 fie valoarea ak+1 (dac a1<ak+1), fie valoarea lui a1 (n caz contrar) etc.
(Problema lui Conway) S se scrie un program care citete m "cartele" coninnd
cte n caractere i tiprete fiecare cartel pe o linie, cu urmtoarele modificri: la

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.

Problema autobuzului (Hermann, 1989). Un autobuz, avnd capacitatea maxim de

nloc locuri, parcurge o traiectorie circular pe care se afl np pasageri care urc i

coboar din autobuz. Se cere s se simuleze activitatea autobuzului i a pasagerilor. Se


presupune c nici un pasager (cltor) nu dorete s fac mai mult de un tur complet.
Problema canibalilor. Un trib format din nc canibali mnnc dintr-un cazan n
care pot intra cel mult max misionari. Cnd un canibal vrea s mnnce, atunci: dac
exist cel puin un misionar n cazan, el mnnc un misionar; n caz contrar canibalul l
trezete pe buctar, ateapt ca acesta s umple cazanul cu max misionari i apoi
mnnc unul dintre ei. Canibalul care l trezete pe buctar trebuie s fie imediar
servit!
Variant: buctarul pndete momentul n care cazanul este gol.
Urna cu bile. O urn conine r bile roii i v bile verzi. Persoana P1 extrage cte o
bil i o pune la loc doar dac este roie. Persoana P2 extrage cte dou bile i apoi
pune n urn fie o bil roie (dac cele dou bile extrase erau de culori diferite), fie o
bil verde (n caz contrar). tiind c persoanele acioneaz concurent i c la orice
moment cel mult una are acces la urn (fie pentru extragere, fie pentru adugare), se
cere s simuleze activitile persoanelor.

Problema liftului (cu diferite variante).

Simularea traficului pe un aeroport.

S-ar putea să vă placă și