Почему PLinq не поддерживает более 63 параллельных потоков? - PullRequest
6 голосов
/ 14 мая 2011

Я думаю, что вопрос ясен.PLinq не позволяет вам создавать более 63 потоков (WithDegreeOfParallelism не позволяет этого, генерирует ArgumentOutOfRangeException).В редких случаях нам нужно получить более 63 потоков из пула потоков (например, операций ввода-вывода, когда задача требует больше времени для выполнения, чем обычно).Насколько я знаю, класс Parallel также имеет такое же ограничение.Есть ли обходной путь?в чем причина этого ограничения?

1 Ответ

6 голосов
/ 14 мая 2011

Цитируется по этой ссылке :

С Parallel.For / ForEach, нет неявное ограничение, однако ThreadPool в .NET 4 (который Parallel.For / ForEach цель по умолчанию) будет использовать только до 64 логических процессора. PLINQ в .NET 4 имеет жестко ограниченный предел 63 перегородки. Как больше и больше машины становятся доступными, я ожидаю вы увидите, что такие ограничения сняты, как в последних версиях Windows операционная система поддерживает до 256 логические процессоры.

...