[obrisani korisnik] Ne znam u čemu radiš ali evo ti moj postupak otprilike.
Imaš dretve: graphics (1), elevator (1 ili 2 ovisno radiš li lab3 ili lab4), passengers (random broj njih). Za komunikaciju koristim globalne varijable, ili zajedničku memoriju kako god hoćeš to nazvat.
Neke od globalnih varijabli: lokacija lifta 1 (int), lokacija lifta 2 (int), jesu li otvorena vrata lifta 1 (bool), tko sve čeka lift na katu 1 (list), tko je izašao na katu 3 (list), tko je u liftu 1 (list) etc.
- Graphics samo rendera te podatke i ne mijenja ih. Ja koristim string formatiranje i samo to printam kao output.
- Elevator dretva gleda di treba ići gore ili dole a za to koristim globalnu varijablu kao listu na koje katove treba ići. Ako ide lift sa 1 na 4 kat a netko čeka na 3 onda stane na 3 i otvori vrata. Nakon tog mora 3 izbaciti sa liste katova na koje treba ići.
- Passenger dretva dodaje kat na kojem čeka u listu koju lift gleda. Kad uđe u lift dodaje kat na koji ide. Ovdje možeš imat problem ako ti liste u tom jeziku nisu thread safe. Npr u Pythonu jesu.
Prvi labos sam radio sa socketima i bilo je puno kompliciranije od ovoga postupka (varijable i dretve), barem što se sinkronizacije tiče.