SO-1st-2.3-w12.tresc-1.0-Slajd25
Synchronizacja producenta i konsumenta za pomocą semaforów ogólnych (2)
Producent ma lokalną zmienną i , która wskazuje kolejną pozycję do zapełnienia w buforze. W przypadku wielu producentów zmienna ta musiałaby być przez nich współdzielona. Zmienna zwiększana jest cyklicznie (modulo n ) po każdym wstawieniu elementu do bufora. Tak funkcjonujący bufor określą się jako ograniczony bufor cykliczny .
Wstawienie elementu do bufora poprzedzone jest operacją opuszczenia semafora wolne . Brak wolnego miejsca oznacza wartość 0 zmiennej semaforowej wolne i tym samym uniemożliwia opuszczenie. W ten sposób producent blokowany jest w dostępie do bufora, co chroni bufor przed przepełnieniem. Semafor wolne zostanie podniesiony przez konsumenta, gdy zwolni on miejsce w buforze.
Jeśli producentowi uda się umieścić kolejny element w buforze, sygnalizuje to przez podniesienie semafora zajęte . Ile razy podniesie go producent, tyle razy będzie mógł go opuścić konsument.