Programowanie wspóÅbieżne. Systemy czasu rzeczywistego - Helion
Programowanie wspóÅbieżne. Systemy czasu rzeczywistego - Helion
Programowanie wspóÅbieżne. Systemy czasu rzeczywistego - Helion
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;