SOP wyk nr 13-Slajd25

Z Studia Informatyczne
Wersja z dnia 00:08, 6 wrz 2006 autorstwa Dwa (dyskusja | edycje) (zmiana tytułu i drobne zmiany w treści)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Synchronizacja producenta i konsumenta za pomocą semaforów ogólnych (3)

Synchronizacja producenta i konsumenta za pomocą semaforów ogólnych (3)


Konsument działa symetrycznie w stosunku do producenta. Podobnie jak producent, utrzymuje on lokalną zmienną i, która wskazuje mu pozycję z kolejnym elementem do pobrania. Zmienna ta musiałaby być współdzielona w przypadku wielu konsumentów.

Przed uzyskaniem dostępu do bufora konsument wykonuje operację opuszczenia semafora zajęte, który zwiększa producent po umieszczeniu w buforze kolejnego elementu. Jeśli semafor zajęte jest równy 0, bufor jest pusty i konsument nie ma tam czego szukać. Utknie on zatem w operacji opuszczania.

Jeśli konsument uzyska dostęp do bufora, pobierze element i tym samym zwolni miejsce. Fakt ten zasygnalizuje poprzez podniesieni semafora wolne, co z kolei umożliwi wykonanie kolejnego kroku producentowi.


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