是否可以限制Parallel.ForEach的内核?
我在我的代码中使用了一个Parallel.ForEach
。 我所有的8个核心都达到了100%。 这对于在服务器上运行的其他应用程序是不利的。 是否有可能限制执行喜欢4核心?
将ParallelOptions
一个实例与ParallelOptions.MaxDegreeOfParallelism
设置为4以Parallel.ForEach
。
尽pipe如此,在其他机器上这可能没有意义,可能会有比你更多或更less的内核。 一般来说,你应该让框架决定并行度。
您可以传递一个ParallelOptions
MaxDegreeOfParallelism
属性设置为4。
以下是一些对其他答案不满意的代码
List<int> iList = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 }; System.Threading.Tasks.ParallelOptions opt = new System.Threading.Tasks.ParallelOptions(); opt.MaxDegreeOfParallelism = 4; // << here the maximum of 4 cores System.Threading.Tasks.Parallel.ForEach<int>(iList, opt, i => { // do someting with parallelism 4 Console.WriteLine(i); });