生產者 - 消費者模式使用 Ada Rendezvous 機制
同步生產者 - 消費者解決方案確保消費者只讀一次生產者所寫的每個資料項。非同步解決方案允許消費者對生產者的輸出進行取樣。消費者消費資料的速度比生成消費的速度快,或者消費者使用資料的速度比生成速度慢。取樣允許消費者處理當前可用的資料。該資料可能只是所產生資料的一個取樣,或者它可能已經被消耗了資料。
procedure PC_Rendezvous is
task Producer;
task Consumer is
entry Buf(Item : in Integer);
end Consumer;
task body Producer is
begin
for I in 1..10 loop
Put_Line("Producer writing" & Integer'Image(I));
Consumer.Buf(I);
end loop;
end Producer;
task body Consumer is
Temp : Integer;
begin
loop
select
accept Buf(Item : in Integer) do
temp := Item;
end;
Put_Line("Consumer read" & Integer'Image(Temp));
or
terminate;
end select;
end loop;
end Consumer;
begin
null;
end PC_Rendezvous;