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.

while true do blginwlasne_sprawy;INPUT(c:integer, 0);OUTPUT(c+l, 0);czyta;INPUT(c:integer, p:integer);OUTPUT(c-l, p)endend;processPISARZ(i: l..P);var c,p: integer;beginwhile true do beginwlasne_sprawy;INPUT (c:integer, p:integer);if c > 0 then begin {trzeba poczekać}OUTPUT(c, p+l); {zgłoszenie się}INPUT(0, p:integer);OUTPUT(-1, p) {zwrot krotki>end elseOUTPUT(-1, p+l); {zwrot krotki i zgloszenie}pisze;INPUT(-1, p:integer);OUTPUT(0, p-l){odmeldowanie się}endend;Rozwiązanie poprawneW rozwiązaniii z możliwością zagłodzenia czytelników wymagaliśmy, aby pisarz zwracałkrotkę do przestrzeni przed rozpoczęciem pisania, umożliwiając w tym czasie rejestracjęnowych pisarzy. Gdyby PISARZ zachowywał krotkę na czas pisania, jego treść wyglądałabynastępująco:while true do beginwlasne_sprawy;INPUT(c:integer, p:integer);if c > 0 then begin {trzeba poczekać}OUTPUT(c, p+l); {zgłoszenie się}INPUT(0, p:integer);p := p - 1end;pisze;OUTPUT(0, p)end{odmeldowanie się}{zwrot krotki}W tym rozwiązaimi pisarze mogą się rejestrować tylko podczas czytania. Pisarzeprzybyli w trakcie pisania nie rejestrują się, lecz po prostu czekają, na krotkę z zerem napierwszej pozycji. W rezultacie, jeśli inicjatywę przejmą pisarze, to po pewnym czasiewszyscy ci, którzy zarejestrowali się podczas czytania, wejdą do czytelni i zmniejszą drugielement krotki do zera. Od tej chwili w przestrzeni będzie się już pojawiać tylko krotka (0,0).Z żywotności operacji INPUT wynika, że w końcu krotkę tę pobiorą czekający czytelnicy.Zaraz potem zarejestrują się czekający pisarze i po pewnym czasie oni przejmą inicjatywę.Nie jest więc tu możliwe zagłodzenia ani pisarzy, ani czytelników. W przedstawionymrozwiązaniu nie można określić kolejności wchodzenia procesów do czytelni (wynika onajedynie ze sposobu realizacji operacji INPUT).189

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

Saved successfully!

Ooh no, something went wrong!