Djed Božićnjak spava u svojoj kući na Sjevernom polu i može ga se probuditi
tek kada
mu se vrati svih 10 sobova koji su na zasluženom odmoru (preciznije posljednji
sob budi
Djeda Božićnjaka). Djed Božićnjak nahrani sobove i ponovo odlazi spavati, a sobovi ostaju
pred kućom. Djedovo buđenje mogu izazvati i patuljci koji imaju poteškoća
prilikom izrade igračaka. Ako samo jedan patuljak ima problem, to nije toliko
ozbiljno da bi probudio Djeda Božićnjaka pa zato patuljci posjećuju Djeda
Božićnjaka u grupama po 3. Patuljci kod Djeda Božićnjaka provedu određeno
vrijeme te se nakon toga vrate pravljenju igračaka, a Djed Božićnjak spavanju.
Samo jedna grupa patuljaka može u nekom trenutku biti kod Djeda Božićnjaka, dok ostali
moraju čekati da se ta grupa ne vrati. Ako se Djed Božićnjak probudi i ispred
vrata vidi grupu patuljaka (može i manje od tri) i sve sobove, došlo je vrijeme za razvoženje poklona. Nakon razvoženja poklona
Djed Božićnjak će sobove pustiti na odmor.
Napisati program koji simulira gore navedene radnje pazeći na specifičnosti svakog od
likova. Ispis programa mora biti detaljan. Za svakog "aktera" predvidjeti po
jednu dretvu/proces.
Dretva Djed Božičnjak je ciklička dretva i stvara se jednom na samom početku
programa. Dretve za sobove i patuljke nisu cikličke (završavaju nakon obavljanja
funkcije dretve) i stvaraju se dinamički (svake 2-3 sekunde jedan novi sob ili
patuljak). Nakon što je stvoreno 10 dretvi sobova, nove dretve sobovi se ne
stvaraju sve dok ovih 10 ne završi (nakon raznošenja poklona). Sve navedeno
vrijedi i za rješenje s dretvama i s procesima.
Primjer rješenja sa semaforima i s monitorima.