Производитель и потребитель связаны через буфер ограниченной емкости в N порций. ЧПП - число пустых порций.
begin
integer ЧПБ, ЧПП, РБ;
ЧПБ:=0;
ЧПП:=N;
РБ:=1;
parbegin
производитель: begin
n1: производство новой порции;
P(ЧПП);
P(РБ);
добавление порции к буферу;
V(РБ);
V(ЧПБ);
goto n1;
end;
потребитель: begin
n2: P(ЧПБ);
P(РБ);
взятие порции из буфера;
V(РБ);
V(ЧПП);
обработка взятой порции;
goto n2;
end;
parend;
end;
И производитель и потребитель решают через РБ задачу взаимного исключения. Проблема производителя: нельзя писать в заполненный буфер. Проблема потребителя: нельзя читать из пустого буфера. Производитель решает свою проблему с использованием общего семафора ЧПП (число пустых порций), а потребитель ¾ через ЧПБ (число порций в буфере).