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

Dav*_*ita 6 .net c# multithreading plinq task-parallel-library

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

Kev*_*che 6

引用此链接:

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