问题标签 [system.threading.channels]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
47 浏览

c# - 当任何生产者可以随时关闭整个频道时,频道消费者如何从多个频道生产者那里获得一切?

我是新手System.Threading.Channels。我有以下消费者代码:

当像这样消费由单个生产者生产的东西时,这似乎工作正常:

但是当我尝试添加相同通用形式的第二个生产者时,一旦两个生产者之一完成(并调用this.Writer.Complete()),另一个生产者仍然需要添加的任何内容都将被拒绝,因为通道已经关闭。这是一个问题,因为我希望读者阅读所有内容,而不仅仅是所有内容,直到任何一个制作人都没有更多可制作的内容。

如何处理这种情况?是否有一些内置或其他“标准”方式?例如,可能是一个“冷凝器”通道,它公开多个Channel.Writer对象(每个“真实”生产者一个)和一个Channel.Reader(单个“真实”消费者)?