Problem pięciu filozofów
Przy okrągłym stole siedzi pięciu filozofów. Zajmują się oni naprzemiennie
tylko dwoma czynnościami - myśleniem i jedzeniem. Do jedzenia filozof
potrzebuje dwu pałeczek. Gdy filozof otrzyma dwie pałeczki je, a następnie
odkłada obydwie pałeczki. Problem polega na takim zorganizowaniu pracy
filozofów aby spełnione były warunki:
- Filozof je wtedy gdy zdobędzie dwie pałeczki.
- Dwu filozofów nie może trzymać tej samej pałeczki.
- Każdy z filozofów musi się w końcu najeść (nie zostanie zagłodzony).
A. Rozwiązanie z możliwością blokady:
1. Filozof czeka aż będzie wolny lewa pałeczka i podnosi go.
2. Filozof czeka aż będzie wolny prawa pałeczka i podnosi go.
3. Filozof je.
4. Filozof odkłada obie pałeczki.
5. Filozof myśli.
Jeżeli w pewnej chwili każdy z filozofów podniesie lewą pałeczkę i będzie
czekał na prawy nigdy go nie otrzyma gdyż algorytm przewiduje zwolnienie
pałeczek po zakończeniu jedzenia. Nastąpi zakleszczenie.
B. Rozwiązanie z możliwością zagłodzenia:
1. Filozof czeka aż będą wolne obie pałeczki i podnosi je (musi to być
operacja niepodzielna).
2. Filozof je.
3. Filozof odkłada obie pałeczki.
4. Filozof myśli.
Może się tak zdarzyć że filozof będzie miał bardzo żarłocznych sąsiadów z
których w każdej chwili jeden z nich je. W takim przypadku filozof zostanie
zagłodzony.
C. Rozwiązanie poprawne
1. Potrzebny jest arbiter zewnętrzny (nazywany lokajem) który dba o to aby
jednej chwili najwyżej czterech filozofów konkurowało o widelce.
2. Dalej postępujemy jak w przypadku A.
Automation_Engineering