- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
假设我有一个简单的 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/
有什么方法可以通过 TPL 数据流限制来限制性能下降吗? 我有一个复杂的组件管道,并试图限制所需的内存需求。我从多个文件中并行读取,管道中的组件可能会从这些文件的随机部分进行一些附加读取,其余组件执行
BoundedCapacity 限制是否只包括输入队列中等待处理的项目,还是它也计算当前正在处理的项目? 让我们以这个ActionBlock为例: var block = new ActionBloc
假设我有一个简单的 ActionBlock var actionBlock = new ActionBlock(_ => Console.WriteLine(_)); 我可以指定一个有限的容量来启用缓
我有这个代码: var data = new BufferBlock(new DataflowBlockOptions { BoundedCapacity = 1 }); var action = n
我是一名优秀的程序员,十分优秀!