我在上面定义了BatchBlockBoundedCapacity

var _batchBlock = new BatchBlock<int>(2, new GroupingDataflowBlockOptions
                                      {BoundedCapacity = 100 });

因此,如果队列容量达到100,则该块将每个接收到的消息推迟到某个位置可用为止。
在这种情况下,批处理队列是否被视为贪婪或非贪婪?

最佳答案

该块是贪婪的,但不是因为它如何处理大于100的项目,而是因为它处理小于2的项目。您可以将贪婪值设置为false(默认为true),然后该块仅在有足够数量时才实际消耗项目发送一批,直到他们被推迟:

var batchBlock = new BatchBlock<int>(2, new GroupingDataflowBlockOptions
{
    Greedy = false,
    BoundedCapacity = 100.
});



Dataflow (Task Parallel Library)

关于c# - 定义了有限容量的贪婪和非贪婪数据流块之间的差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26394644/

10-12 18:19