2

我想知道是否有一种方法可以设置数据流块中的队列可以容纳的最大项目/消息数(缓冲区块或动作块队列),并将这种上限向上传播到其他数据块,这些数据块可能会提供包含队列的数据块,它可以容纳,设置的最大项目。我猜提供数据块的队列只会增加项目,对吗?有没有办法让它们也锁定,或者我是否需要为链接到包含有上限队列的块的所有块队列实现上限?

例如,我可以从链接到缓冲区块的自定义生成数据流块开始。这个缓冲区块链接到一个动作块,我希望它的队列不超过队列中的一定数量的项目。如何防止生产数据流块或缓冲区块中的队列在自己的队列中存储越来越多的项目,因为知道链中的最后一个数据流块不能在某个时间点消耗更多项目并且 inQueue 不能接受更多项目?

4

1 回答 1

2

没有任何“智能”方法可以做到这一点,您只需BoundedCapacity在创建每个块时设置它们的选项。

我认为有几个原因导致您提出的建议不起作用:

  1. 区块究竟应该如何决定它的容量应该是多少?仅仅因为 anActionBlock的容量为 100 并不意味着BufferBlock它前面的容量应该相同。这是必须由人来决定的事情。
  2. 块的选项在创建后无法更改。做你想做的事需要你改变选项。

话虽如此,我认为在您的简单情况下,您可以摆脱BufferBlock并将项目从生产块直接发送到ActionBlock.

于 2012-07-11T07:38:53.497 回答