15.04.2014 Views

Programowanie współbieżne. Systemy czasu rzeczywistego - Helion

Programowanie współbieżne. Systemy czasu rzeczywistego - Helion

Programowanie współbieżne. Systemy czasu rzeczywistego - Helion

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Rozdzia 8. Problemy programowania wspóbienego 257<br />

end Czytelnicy_Pisarze;<br />

package body Czytelnicy_Pisarze is<br />

procedure Czytaj_Plik(I: out Typ) is<br />

begin<br />

........<br />

end Czytaj_Plik;<br />

procedure Zapisz_Plik(I: Typ) is<br />

begin<br />

........<br />

end Zapisz_Plik;<br />

protected Kontrola is<br />

entry Zacznij_Czytac;<br />

procedure Zakoncz_Czytac;<br />

entry Zacznij_Zapisywac;<br />

procedure Zakoncz_Zapisywac;<br />

private<br />

Czytelnicy: Natural := 0;<br />

Pisarze: Boolean := False;<br />

end Kontrola;<br />

procedure Czytaj(I: out Typ) is<br />

begin<br />

Kontrola.Zacznij_Czytac;<br />

Czytaj_Plik(I);<br />

Kontrola.Zakoncz_Czytac;<br />

end Czytaj;<br />

procedure Zapisz(I: Typ) is<br />

begin<br />

Kontrola.Zacznij_Zapisywac;<br />

Zapisz_Plik(I);<br />

Kontrola.Zakoncz_Zapisywac;<br />

end Zapisz;<br />

protected body Kontrola is<br />

entry Zacznij_Czytac when not Pisarze and<br />

Zacznij_Zapisywac'Count = 0 is<br />

begin<br />

Czytelnicy := Czytelnicy + 1;<br />

end Zacznij_Czytac;<br />

procedure Zakoncz_Czytac is<br />

begin<br />

Czytelnicy := Czytelnicy - 1;<br />

end Zakoncz_Czytac;<br />

entry Zacznij_Zapisywac when not Pisarze and Czytelnicy = 0 is<br />

begin<br />

Pisarze := True;<br />

end Zacznij_Zapisywac;<br />

procedure Zakoncz_Zapisywac is<br />

begin<br />

Pisarze := False;<br />

end Zakoncz_Zapisywac;<br />

end Kontrola;<br />

end Czytelnicy_Pisarze;

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

Saved successfully!

Ooh no, something went wrong!