Obaj zauważają, że golibroda jest zajęty, po czym idą do poczekalni i próbują zająć to samo krzesło.
Wymyślenie tej analogii jest często przypisywane Edsgerowi Dijkstrze, jednemu z pionierów informatyki.
Rozwiązanie Istnieje wiele rozwiązań tego problemu. Kluczowym elementem każdego z nich jest tzw. mutex (blokada), który sprawia, że tylko jeden proces naraz może zmieniać stan systemu. Golibroda musi uzyskać dla siebie blokadę, zanim sprawdzi liczbę klientów, i zwolnić ją, gdy zasypia lub zaczyna obsługiwać klienta. Klient musi uzyskać blokadę, zanim wejdzie do gabinetu, i zwolnić ją, gdy tylko usiądzie w poczekalni lub na krześle golibrody. Zabieg ten eliminuje oba problemy opisane w poprzedniej sekcji. Potrzebna jest także pewna liczba semaforów do przechowywania stanu systemu, na przykład liczby osób w poczekalni.
Zobacz też problem ucztujących filozofów problem producenta i konsumenta
Bibliografia
Kategoria:Programowanie równoległe