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

本文关键字:并行 线程 PLinq 不支持 为什么 | 更新日期: 2023-09-27 17:56:31

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

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

引用自此链接:

使用 Parallel.For/ForEach,没有 隐式限制,但是线程池 在 .NET 4 中(其中 Parallel.For/ForEach 默认情况下目标)最多只能使用 64 个逻辑处理器。 普林克在 .NET 中 4 的硬编码限制为 63 分区。 越大越大 机器变得可用,我希望 您将看到此类限制被删除, 就像最新版本一样 操作系统支持的视窗数量多达 256 个 逻辑处理器。