begin
TProc(procedure() var
i: Integer;
c: CChannel<Integer>; //声明一个通道,它可以携带一个整数,用于在两个线程之间传递 begin
c:=CChannel<Integer>.Create;
go( //启动生产线程 procedure() var
i: Integer; begin for i:=1 to 10 do //制作10个整数作为产品(好弱。。),交给产生线程
c.value:=i;
c.value:=-1; //为-1时表示生产结束了(这属于这个模型的协议,我随意规定的) end);
go( //启动消费线程,它不停的接收整数产品,判断并输出为偶数的值 procedure() var
i: Integer; begin whiletruedobegin //不停的处理,但没有cpu消耗的
i:=c.value; //接收产品,如果没收到,就停在这等 if i=-1 thenbegin //为-1时表示生产结束了(这属于这个模型的协议,我随意规定的)
c.Free; break; end; if i mod 2=0 then
writeln(inttostr(i)); end; end); end)();