我认为问题很清楚。 PLinq不允许您创建超过63个线程(WithDegreeOfParallelism不允许它,抛出ArgumentOutOfRangeException)。在极少数情况下,我们需要从线程池中获取超过63个线程(例如I / O操作,其中任务需要比平时更多的时间来完成)。据我所知,Parallel类也有相同的限制。有没有解决方法?这种限制的原因是什么?
答案 0 :(得分:6)
引自this link:
使用Parallel.For / ForEach,没有 隐式限制,但ThreadPool 在.NET 4中(Parallel.For / ForEach 默认情况下的目标)最多只能使用 64个逻辑处理器。 PLINQ in .NET 4的硬编码限制为63 分区。越来越大 我希望机器可用 你会看到这些限制被删除, 就像最新版本一样 操作系统支持最多256个Windows 逻辑处理器。