2012-10-17 46 views
3

我正在下载文件,这意味着即使我只有2个内核,它会提高性能,使两个以上的线程。Parallel.ForEach() - 多少个线程?

即使我将ParallelOptions.MaxDegreeOfParallelism设置为更高的值,Parallel.ForEach()的线程数是否与内核数量一样多? ?

+0

您使用的是什么版本的.NEt?如果您使用.NET4.5,则ReadAsync可能会更容易 –

+0

我正在使用4.0。但我可以问我们是否可以在服务器上安装4.5。的 – Skuli

+0

可能重复的[是否Parallel.ForEach限制活动线程的数目?](http://stackoverflow.com/questions/1114317/does-parallel-foreach-limits-the-number-of-active-threads) –

回答

3

从技术文档:

的MaxDegreeOfParallelism限制了传递这个ParallelOptions 实例的设定值,如果是阳性的并行方法调用运行并发操作 的数量。如果 MaxDegreeOfParallelism为-1,则对并发运行的操作数没有限制。

该函数只抛出ArgumentOutOfRangeExceptionMaxDegreeOfParalleism的类型为int。所以它意味着它可以创建比核心数更多的线程。

我可以证实它,因为我已经跑了很多显示的流程数量完全按照我以前设置的XML生成过程和任务管理器。