Podľa prednášky implementujte riešenie problému fajčiarov. Pri modifikácii, v ktorej agent nečaká na signalizáciu alokovania zdrojov, vyriešte problém zvýhodňovania fajčiarov a v dokumentácii toto svoje riešenie vhodným spôsobom opíšte.
Podľa prednášky implementujte riešenie problému hodujúcich divochov.
Vypracujte program, ktorý rieši modifikovaný synchronizačný problém hodujúcich divochov (Dining Savages).
Divosi vždy ZAČÍNAJÚ večerať všetci spolu. Keď sa všetci zídu, začnú si postupne naberať z hrnca (a pripadne budiť kuchára). Porcie do hrnca vkladá kuchár, nie divoch!
Vhodne modelujte daný problém podľa nasledovných požiadaviek:
Pre overenie modelu použite výpisy podľa nasledovnej špecifikácie formátu:
"divoch %2d: prisiel som na veceru, uz nas je %2d"
"divoch %2d: uz sme vsetci, zaciname vecerat"
"divoch %2d: pocet zostavajucich porcii v hrnci je %2d"
"divoch %2d: budim kuchara"
"divoch %2d: beriem si porciu"
"divoch %2d: hodujem"
"kuchar: varim"
Ide o úlohu Hodujúcich divochov, ktorá je založená na myšlienke Producentov a konzumentov, rozšírená o sledovanie stavu „skladu“ (koľko porcií sa nachádza v hrnci).
Štandardné riešenie Hodujúcich divochov však treba rozšíriť ešte o bariéru, aby sa pred každým hodovaním najprv zišli všetci divosi, až potom môže začať každodenná večerná hostina.
Ponechávame ako domácu úlohu na precvičenie.
Vypracujte program, ktorý rieši modifikovaný synchronizačný problém hodujúcich divochov (Dinning Savages).
V kmeni je viacero kuchárov. Keď divoch zistí, že je hrniec prázdny, zobudí VŠETKÝCH kuchárov, ktorí si môžu pri varení navzájom pomáhať a spoločne variť. PRÁVE JEDEN kuchár oznámi čakajúcemu divochovi, že je dovarené. Porcie do hrnca vkladá kuchár, nie divoch!
Vhodne modelujte daný problém podľa nasledovných požiadaviek:
Ponechávame ako domácu úlohu na precvičenie.