procedure ChannelTest; var chan: Channel; producer: TThread; consumer: TThread; begin chan := Channel.Create(); producer := TThread.CreateAnonymousThread( procedure var data: TArray; begin data := [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; chan <= data; chan.Close; end ); consumer := TThread.CreateAnonymousThread( procedure var v: integer; begin while (v <= chan) do begin WriteLn(v); end; end ); producer.Start; consumer.Start; end;