Dla każdego widelca, który nie jest w jego posiadaniu, wysyła żądanie w celu jego uzyskania. Gdy filozof z widelcem otrzymuje żądanie, zatrzymuje widelec, jeśli jest on czysty, jeśli natomiast jest brudny, to go przekazuje, uprzednio myjąc. Gdy filozof kończy jedzenie, wszystkie jego widelce stają się brudne. Jeśli podczas jedzenia przyszło żądanie od innego filozofa, wtedy po skończeniu jedzenia, przekazywany jest czysty widelec.
To rozwiązanie pozwala na duży stopień współbieżności rozwiązując dowolnie duży problem.
Zobacz też problem czytelników i pisarzy problem producenta i konsumenta
Bibliografia Silberschatz, Abraham; Peterson, James L. Operating Systems Concepts. Addison-Wesley. 1988. Chandy, K.M.; Misra, J. (1984). The Drinking Philosophers Problem. ACM Transactions on Programming Languages and Systems. Dijkstra, E. W. (1971, June). Hierarchical ordering of sequential processes. Acta Informatica 1(2): 115-138. Lehmann, D. J., Rabin M. O, (1981). On the Advantages of Free Choice: A Symmetric and Fully Distributed Solution to the Dining Philosophers Problem. Principles Of Programming Languages 1981 (POPL'81), pages 133-138.
Linki zewnętrzne Opis problemu i rozwiązanie dla 2 i 4 filozofów (kod w Adzie)
Kategoria:Programowanie równoległe