SO-1st-2.3-w12.tresc-1.0-Slajd36
Z Studia Informatyczne
Synchronizacja śpiących fryzjerów za pomocą semaforów (2)
Klient zamyka semafor mutex w celu ochrony operacji na zmiennej l_czek , po czym sprawdza, czy jest wolne miejsce w poczekalni. Jeśli nie ma miejsca, otwiera semafor mutex i kończy niepowodzeniem próbę skorzystania z usługi. Jeśli natomiast jest wolne miejsce w poczekalni, to będąc cały czas w sekcji krytycznej, chronionej przez mutex , zmniejsza o 1 zmienną l_czek (zajmuje miejsce w poczekalni), podnosi semafor klient , dając w ten sposób sygnał fryzjerowi i opuszcza sekcję krytyczną. Po opuszczeniu sekcji krytycznej czeka na wolnego fryzjera na semaforze fryzjer — czeka na sygnał na tym semaforze, czyli na jego podniesienie. Kiedy pojawi się wolny fryzjer, podniesie on ten semafor i klient przejdzie do fazy strzyżenia.