Uruchamiamy współbieżnie dwa następujące procesy.
var:
p: integer := 0;
process Generator;
begin
while (true) do
begin
generator_protokol_wstepny;
p = generuj_nastepny(p);
generator_protokol_koncowy;
end;
end;
process Drukarz;
begin
while (true) do
begin
drukarz_protokol_wstepny;
drukuj(p);
drukarz_protokol_koncowy;
end;
end;
Pierwszy program generuje wartości, drugi program drukuje wartości. Chcemy zapewnić, że każda wartość wygenerowana przez pierwszy program zostanie wydrukowana przez drugi program dokładnie jeden raz. Jakie instrukcje należy umieścić w protokołach, aby zrealizować ten cel?