TPL数据流控制嵌套块之间的最大并行度

时间:2017-10-20 23:16:00

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

假设我有一个动作块A,它以最大并行度4并行执行一些工作。

假设我有一些情况,其中动作块A在某些情况下正在执行工作X而在其他情况下工作Y. X是一些小作品,Y是一些较大的作品,需要将它分成较小的工作块,因此我也需要将它们并行化。
因此,在内部工作中,我需要将工作块并行化到最大4度,但此时我可能有4个并行执行的块,这可能导致例如并行运行的“A-X,A-X,A-Y,A-Y”。这将导致1 + 1 + 4 + 4个并行任务,这对我来说是太多并行任务,因为我总是将其限制为最多4个(或任何其他选择的数字)。

有没有办法控制包括嵌套块在内的最大并行度?

1 个答案:

答案 0 :(得分:1)

在TPL Dataflow中创建块时,您可以通过its options为块指定自定义调度程序。

限制并发任务数量和并发级别的简便方法是使用代码中的ConcurrentExclusiveSchedulerPair和您需要的参数。