TPL Dataflow SingleProducerConstrained是指源块的数量还是它们的并行度?

时间:2017-08-10 11:06:33

标签: c# task-parallel-library tpl-dataflow

TPL数据流SingleProducerConstrained选项是指源块的数量还是源块的最小总并行度?

即。如果我只有一个源块使用此选项链接到块,则源的MaxDegreeOfParallelism是否必须为1?

1 个答案:

答案 0 :(得分:1)

不,这意味着(来自MSDN):

  

PostCompleteFaultOfferMessage等方法永远不会同时调用。

因此,您应该将此属性设置为truefalse是默认值),如果您100%确定该块将从仅一个中获取消息 来源来源。例子:

  • 阻止只是一个链接源的目标
  • 您在向块发送内容的所有方法周围使用lock
  • 您的应用是单线程的,并且您不使用线程池或其他线程技术发送消息。

现在回到你的问题:

  

如果我只有一个源块通过此选项链接到某个块,那么源的MaxDegreeOfParallelism是否必须为1?

它应该是1,好像它会更多,它可能会破坏一些在SingleProducerConstrained设置为true时删除的检查。