在C TPL数据流库中,SingleProducerConstrained是操作块的一个优化选项,当只有一个线程向操作块提供数据时,您可以使用它:
如果一个街区只会被一个
时间,意味着一次只有一个线程将使用如下方法
在块上发布、提供消息并完成,此属性可能是
设置为true以通知块它不需要应用额外的
同步。
如果ActionBlock使用MaxDegreeOfParallelist>1的单个TransformBlock馈送,会不会违反在ActionBlock上将SingleProcerControld设置为true的规则?或者,maxDegreeOfparallelism>1的单个transformBlock仍算作“单个生产者”?

最佳答案

是的,我认为这是一个单一的制片人。
这是因为所有构建的int块都保持顺序,所以只有在接受了项1之后,才能向目标块提供项2(使用the OfferMessage() method)。这个约束意味着一次只能有一个线程向目标提供消息,这遵循了“单个生产者”的定义。

07-26 04:30