SingleProducerConstrained和MaxDegreeOfParallelism - SingleProducerConstrained:限制只有一个生产者的并行处理器。 - MaxDegreeOfParallelism:并行处理器的最大并行度。

11
在C# TPL Dataflow库中,SingleProducerConstrained是ActionBlock的一种优化选项,当只有一个线程在提供操作块时,可以使用它:
如果一个块只会被单个生产者使用,也就是说,每次只有一个线程会在块上使用Post、OfferMessage和Complete等方法,那么可以将此属性设置为true,以通知块无需应用额外的同步。
如果使用单个MaxDegreeOfParallelism > 1的TransformBlock来提供ActionBlock,是否会违反将SingleProcerContrained设置为true的规则?还是说单个MaxDegreeOfParallelism > 1的TransformBlock仍然被视为“单个生产者”?
1个回答

8

是的,我认为这被视为单个生产者。

这是因为所有内置块都维护顺序,所以仅在 item 1 被接受后才能将 item 2 提供(使用 the OfferMessage() 方法)给目标块。这个限制意味着只有一个线程可以一次向目标提供消息,这符合“单个生产者”的定义。


1
如果EnsureOrdered为false会怎样? - Miles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接