【问题标题】:Why PLinq doesn't support more than 63 parallel threads?为什么 Plinq 不支持超过 63 个并行线程?
【发布时间】:2011-05-14 16:16:26
【问题描述】:

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

【问题讨论】:

  • 你有多少个 CPU?将 APM 用于您的(主要)I/O 操作。

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


【解决方案1】:

引用自this link

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

【讨论】:

  • 您好,感谢您的回答。我在这里有点困惑。该链接说 Parallel.For/ForEach 没有线程限制,但它也指出 .NET ThreadPool(依赖于 Parallel 类)实现。这意味着我仍然被限制在 64 个线程?
  • 感谢您的帮助,我刚刚通过 Parallel.ForEach 创建了 525 个线程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 2011-06-25
相关资源
最近更新 更多