質問は明らかだと思います。PLinqでは、63を超えるスレッドを作成することはできません(WithDegreeOfParallelismでは許可されないため、ArgumentOutOfRangeExceptionがスローされます)。まれに、スレッドプールから63を超えるスレッドを取得する必要があります(タスクの完了に通常よりも多くの時間が必要なI / O操作など)。私の知る限り、Parallelクラスにも同じ制限があります。回避策はありますか?この制限の理由は何ですか?
1 に答える
6
このリンクから引用:
Parallel.For / ForEachでは、暗黙の制限はありませんが、.NET 4のThreadPool(デフォルトではParallel.For / ForEachターゲット)は最大64個の論理プロセッサーのみを使用します。.NET 4のPLINQには、ハードコードされた63パーティションの制限があります。ますます大規模なマシンが利用可能になると、OSが最大256個の論理プロセッサをサポートする最新バージョンのWindowsと同様に、このような制限がなくなると思います。
于 2011-05-14T16:19:27.200 に答える