SO-1st-2.3-w12.tresc-1.0-Slajd25: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
(Nie pokazano 3 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 4: | Linia 4: | ||
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'' . | 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. | 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. | 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. | ||
[[SO-1st-2.3-w12.tresc-1.0-Slajd24 | << Poprzedni slajd]] | [[SO-1st-2.3-w12.tresc-1.0-toc|Spis treści ]] | [[SO-1st-2.3-w12.tresc-1.0-Slajd26 | Następny slajd >>]] | [[SO-1st-2.3-w12.tresc-1.0-Slajd24 | << Poprzedni slajd]] | [[SO-1st-2.3-w12.tresc-1.0-toc|Spis treści ]] | [[SO-1st-2.3-w12.tresc-1.0-Slajd26 | Następny slajd >>]] |
Aktualna wersja na dzień 19:51, 24 wrz 2006
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.