为什么PLinq不支持超过63个并行线程?

时间:2011-05-14 16:16:26

标签: c# .net multithreading task-parallel-library plinq

我认为问题很清楚。 PLinq不允许您创建超过63个线程(WithDegreeOfParallelism不允许它,抛出ArgumentOutOfRangeException)。在极少数情况下,我们需要从线程池中获取超过63个线程(例如I / O操作,其中任务需要比平时更多的时间来完成)。据我所知,Parallel类也有相同的限制。有没有解决方法?这种限制的原因是什么?

1 个答案:

答案 0 :(得分:6)

引自this link

  

使用Parallel.For / ForEach,没有   隐式限制,但ThreadPool   在.NET 4中(Parallel.For / ForEach   默认情况下的目标)最多只能使用   64个逻辑处理器。 PLINQ in .NET   4的硬编码限制为63   分区。越来越大   我希望机器可用   你会看到这些限制被删除,   就像最新版本一样   操作系统支持最多256个Windows   逻辑处理器。