6

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

4

1 回答 1

6

引用自此链接

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

于 2011-05-14T16:19:27.200 回答