PROIZVOĐAČI I POTROŠAČI

Neka proizvođači i potrošači komuniciraju preko ograničenog spremnika kapaciteta jedne poruka veličine jedan znak.
Proizvođači proizvode poruke, svakoj poruci dodaju oznaku (tip poruke) prema kojoj nasumično određuju kojem potrošaču je poruka namijenjena te ju šalju u red poruka.
Potrošači čitaju samo poruke koje su namijenjene njima.

Zadatak

Sinkronizirati 2 procesa proizvođača i 3 procesa potrošača koristeći za međusobno isključivanje:

- raspodijeljeni centralizirani protokol gdje je jedan od procesa proizvođača centralni čvor (rješavaju studenti čija je zadnja znamenka JMBAG parna) ili

- protokol s putujućom značkom (rješavaju studenti čija je zadnja znamenka JMBAG neparna).

Svi procesi ispisuju poruku koju šalju i poruku koju primaju. Poruka koja se stavlja u red poruka je veličine jedan znak.
Proces proizvođač ispisuje osim slučajno generirane poruke i kome je poruka namijenjena.
Poruke proizvoljne duljine proizvođači mogu generirati nasumično ili se one zadaju iz komandne linije prilikom pokretanja programa ili program proizvođač čeka da korisnik unese poruku ili iz datoteke i sl. Ako se zadana poruka sastoji od više znakova (npr. "Danas je lijep dan"), šalje se u red poruka redom znak po znak uvijek istom potrošaču. Kako bi potrošač znao da je primio cijelu poruku, na kraju poruke treba dodati oznaku za kraj poruke npr. 0.
Potrošači ispisuju svaku poruku koju prime (znak po znak, pa i oznaku za kraj poruke), a kada prime oznaku za kraj poruke, ispisuju cijelu poruku, tj. niz primljenih znakova.

Sve što u zadatku nije zadano, riješiti na proizvoljan način.