【问题标题】:Does Channel<T> support multiple ChannelReaders and ChannelWriters, or only one of each?Channel<T> 是否支持多个 ChannelReaders 和 ChannelWriters,或者每个只支持一个?
【发布时间】:2020-05-23 01:46:00
【问题描述】:

Channel.CreateUnbounded 的文档说:

创建一个可供任意数量阅读器使用的无限通道,并且 作家兼任。

但是Channel 仅具有单个ChannelReaderChannelWriter 的属性,并且似乎没有一种方法可以围绕现有通道显式创建读取器/写入器。

我曾想过,如果您有多个生产者/消费者,他们应该共享同一个作者/读者实例,这是不正确的吗? “读者/作者的数量”是在谈论并发访问而不是类实例的数量吗?

【问题讨论】:

    标签: c# system.threading.channels


    【解决方案1】:

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

    重要提示:在有多个消费者的情况下,通过该渠道的每件商品将只被一个消费者接收。 Channel&lt;T&gt; 不支持将一个元素传播给多个消费者,例如 BroadcastBlock&lt;T&gt; 数据流块。

    【讨论】:

      猜你喜欢
      • 2016-01-16
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多