生产者 - 消费者模式使用 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;