SO-1st-2.3-w12.tresc-1.0-Slajd36

Z Studia Informatyczne
Wersja z dnia 14:05, 18 wrz 2006 autorstwa Dwa (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Synchronizacja śpiących fryzjerów za pomocą semaforów (2)

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.


<< Poprzedni slajd | Spis treści | Następny slajd >>