Vecerajúci filozofi: Spec4
Dalšie zlepšenie: Spec3 evokuje nasledovné riešenie:
- non-eating proces u pošle vidlicku, ktorú zdiela s v procesu v, ak má tento vyššiu prioritu nez u alebo ak u je thinking
- hungry proces u je (eats), ak drzí vidlicny, ktoré zdiela so susedmi a pre kazdého suseda v platí
- u má vyššiu prioritu ako v
- v je thinking
V distribuovanej a. máme opät problém urcit priority
Distribuovaná implementácia priorít: nahradíme (odn5) a (odn6) tak, aby sa dali lahko implementovat na distribuovanej architektúre
Neformálne (tzv. „hygienické riešenie“):
- kazdej vidlicke priradíme atribúty clean/dirty
- proces u má prioritu nad v, iff vidlicka, ktorú zdielajú, je
- 1. clean a má ju u, alebo
- 2. dirty a má ju v
- eating proces drzí ?vidlicky (ktoré zdiela so susedmi) a ? sú dirty (odn10, zodpovedá odn5)
- proces drziaci clean vidlicku ju stále drzí a tá ostáva clean, az kým nezacne jest (odn11)
- dirty fork ostáva dirty, az kým sa nepošle prec ? vtedy sa aj vycistí (odn12, zodpovedá odn6)
- clean forks drzia len hungry (odn13)