12.07.2015 Views

Spis treœci - Patrz

Spis treœci - Patrz

Spis treœci - Patrz

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

PB(CHROŃ);ac := ac + 1;if ap = O thenwhile dc < ac do begindc := dc + 1; {wpuszczenie wszystkich}V(CZYT){czytelników przed sobą}end;{i otwarcie sobie drogi}VB(CHROŃ);P(CZYT);czytanie;PB(CHROŃ);dc := dc - 1;ac := ac - l;if dc = O thenwhile dp < ap do begindp := dp + 1; {wpuszczenie wszystkich}V(PIS){oczekujących pisarzy}end;VB(CHROŃ)endend;process PISARZ(i:1..P);beginwhile true do beginwłasne.sprawy;PB(CHROŃ);ap : = ap + l;if ac = O thenwhile dp < ap do begin {tu mógłby być if,}dp := dp + 1;{ale dla symetrii jest}V(PIS){instrukcja while}end;VB(CHROŃ);P(PIS);PB(W);pisanie;VB(W);PB(CHROŃ);dp := dp - 1;ap := ap - 1;if dp = O thenwhile dc < ac do begindc := dc + 1; {wpuszczenie wszystkich}V(CZYT){czekających czytelników}end;VB(CHROŃ)endend;Jeżeli liczba czytelników M jest znana lub w czytelni może przebywać co najwyżej Mczytelników i (w obu przypadkach) M jest nieduże, można podać znacznie prostszerozwiązanie, w którym wystarczą dwa semafory. Semafor WOLNE wskazuje liczbę wolnychmiejsc w czytelni. Semafor W służy do wzajemnego wykluczania pisarzy.const M = ?; {liczba czytelników}P = ?; {liczba pisarzy}var WOLNE: semaphore := M; {liczba miejsc}W: binary semaphore := 1; {do wzajemnego wykluczania pisarzy}40

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!