Semafory. Problem czytelników i pisarzy
• Wariant 2 (specjalny): Znana jest liczba M czytelników lub w czytelni może przebywać co najwyżej M czytelników (M jest małe). M jest parametrem problemu
• W poniższym rozwiązaniu semafor e pełni rolę zmiennej zliczającej i reprezentuje bieżącą liczbę wolnych miejsc w czytelni przeznaczonych dla czytelników. Semafor s pełni rolę muteksu wzajemnie wykluczającego dostęp do sekcji pisania
semaphore e //inicjalnie =M; semafor ogólny (empty - liczba wolnych miejsc) binary semaphore s // semafor binarny - wzajemne wykluczanie
process czytelnik begin
while true begin
process pisarz begin
while true begin
1: |
sekcja lokalna |
1: |
sekcja lokalna | |
2: |
wait(e) |
2: |
wait(s) | |
3: |
czytanie |
3: |
for j = 1 to M do |
wait(e) |
4: |
signal(e) |
4: |
pisanie | |
end |
5: |
for j = 1 to M do |
signal(e) | |
end |
6: |
signal(s) | ||
end | ||||
end |
15