我正在下载文件,这意味着即使我只有2个内核,也可以提高性能以创建两个以上的线程。Parallel.ForEach()
是否仅产生与核心数量一样多的线程,
即使我将ParallelOptions.MaxDegreeOfParallelism设置为更高的值?
最佳答案
从文档:
MaxDegreeOfParallelism限制并发操作的数量
由通过此ParallelOptions传递的Parallel方法调用运行
实例为设置值(如果为正)。如果
MaxDegreeOfParallelism为-1,则对
并发运行的操作数。
该函数仅抛出ArgumentOutOfRangeException
,而MaxDegreeOfParalleism
的类型为int。因此,这意味着它可以创建比内核数更多的线程。
我可以确认,因为我运行了很多xml生成过程,并且任务管理器完全按照我之前的设置显示了过程数。
关于.net - Parallel.ForEach()-多少个线程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12933308/