gpt4 book ai didi

c# - DataflowBlockOptions.BoundedCapacity 和 BufferBlock 之间的区别

转载 作者:可可西里 更新时间:2023-11-01 08:45:02 26 4
gpt4 key购买 nike

假设我有一个简单的 ActionBlock<int>

var actionBlock = new ActionBlock<int>(_ => Console.WriteLine(_));

我可以指定一个有限的容量来启用缓冲:

var actionBlock = new ActionBlock<int>(
_ => Console.WriteLine(_),
new ExecutionDataflowBlockOptions
{
BoundedCapacity = 1000
});

创建 BufferBlock<T> 是否更好?并将其链接到 actionBlock,是否相同,或者是否多余?

最佳答案

如果您只是在 ActionBlock 之前添加了有界 BufferBlock,那将无法正常工作,因为 ActionBlock 仍然是无界的。因此,项目会在 ActionBlock 的输入队列中不断累积,但一无所获。

如果您添加了有界 BufferBlock 并将 ActionBlock 的 BoundedCapacity 设置为 1,那么这将起作用(加减 1)。

这样做不会给你太多(除了增加一些小的开销),所以一般来说,你应该只设置 ActionBlock 的 BoundedCapacity。但在某些情况下,有边界的 BufferBlock 和边界为 1 的 ActionBlock 的组合可能有意义。例如,当您只想在创建 ActionBlock 后设置容量时。

关于c# - DataflowBlockOptions.BoundedCapacity 和 BufferBlock<T> 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20887659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com