|
Exemple de probleme de sincronizare "clasice"Exemplul 1: Producatori/ConsumatoriIntr-un program exista un numar de N fire de executie producator si M fire de executie consumator.Firele producator genereaza elemente, de exemplu litere sau numere. Aceste elemente sint inserate intr-un buffer de dimensiune SIZE elemente, pe pozitiile libere. Daca buffer-ul e plin, procesele producator se blocheaza asteptind locuri goale pentru elemente. Firele consumator iau elemente din buffer, de pe pozitiile ocupate, eliberindu-le. Daca nu exista elemente in buffer, firele se blocheaza asteptind elemente generate. Exemplul 2: Barbierul somnorosSe considera o frizerie deservita de un barbier. Acesta dispune de cinci scaune in holul de asteptare. Barbierul nu poate deservi decat un client la un moment dat, iar in criza de clienti barbierul atipeste. Un client in functie de situatia existenta in frizerie in momentul sosirii poate actiona intr-unul din modurile urmatoare:
Exemplul 3: Fum de tigareteSe considera un sistem care consta din 3 fire de executie smoker si un fir de executie agent. Fiecare smoker isi pregateste o tigareta si o fumeaza. Pentru a face o tigareta sunt necesare trei ingrediente: tutun, hartie, si chibrite. Unul din fire are numai hartie, celalt are numai tutun si al treilea numai chibrite. Firul agent are o rezerva infinita din toate cele trei ingrediente si pune cate doua din ingrediente pe o masa. Firul smoker care are celalalt ingredient poate atunci sa-si confectioneze si sa fumeze o tigareta semnaland agentului cand a terminat, atunci agentul pune alte doua ingrediente pe masa si ciclul se repeta. |