Producenci i konsumenci

Występują dwa rodzaje procesów: producent i konsument. Procesy dzielą wspólny zasób którym jest bufor. Zadaniem producenta jest produkowanie porcji i umieszczanie ich w buforze. Zadaniem konsumenta jest pobieranie pojedynczo kolejnych porcji z bufora.

var bufor: buffer;

process Producent;
...
begin
  while (true) do
  begin
    porcja = produkuj();
    ...
    dodaj_do_bufora(bufor, porcja);
    ...
  end;
end;

process Konsument;
...
begin
  while (true) do
  begin
    ...
    porcja = pobierz_z_bufora(bufor);
    ...
    konsumuj(porcja);
  end;
end;

Warianty: