Channel<T> 是否支持多个 ChannelReader 和 ChannelWriters,或者每个只支持一个?

Does Channel<T> support multiple ChannelReaders and ChannelWriters, or only one of each?

Channel.CreateUnbounded 的文档说:

Creates an unbounded channel usable by any number of readers and writers concurrently.

但是 Channel 仅具有单个 ChannelReaderChannelWriter 的属性,而且似乎没有办法明确地围绕一个 reader/writer 创建一个 reader/writer现有频道。

我认为如果您有多个 producers/consumers,它们应该共享 writer/reader 的同一个实例,这是不正确的吗? "number of readers/writers" 是在谈论并发访问而不是 class 个实例的数量吗?

是的,文档意味着多个生产者(作者)和消费者(读者)。允许所有生产者使用频道的单ChannelWriter,允许所有消费者使用其单ChannelReader。不需要外部同步。 Channel<T> class 是 100% 线程安全的。

重要提示:在多个消费者的情况下,通过通道传递的每个项目只会被一个消费者接收。 Channel<T> 不支持将一个元素传播给多个消费者,例如 BroadcastBlock<T> 数据流块。