MaxDegreeOfParallelism决定最佳价值

Max*_*ich 7 .net c# parallel-processing multithreading task-parallel-library

简单的问题.

对于任何给定的算法,您如何确定MaxDegreeOfParallelism的最佳值?需要考虑哪些因素以及权衡取舍?

vto*_*ola 12

我认为这取决于,如果您的所有任务都是"CPU绑定",那么它可能等于您机器中的CPU数量.然而,如果您的任务是"IO绑定",您可以开始增加数量.

当CPU必须从一个线程切换到另一个线程(上下文切换)时,它有成本,因此如果您使用太多线程并且CPU一直在切换,则会降低性能.另一方面,如果你过分限制该参数,并且操作是长"IO绑定"操作,并且CPU空闲了很长时间等待这些任务完成...你没有充分利用你的机器的资源(这就是多线程的意义)

我认为这取决于每个算法,正如@ Amdahls的法律所指出的那样,并且没有一个你可以遵循的主经验法则,你将不得不计划并调整它:D

干杯.