我在代码中使用Parallel.ForEach
。我的所有8个内核都达到了100%。这对于在服务器上运行的其他应用程序来说很糟糕。 是否可以将执行限制为4核?
答案 0 :(得分:42)
将设置为ParallelOptions
的{{1}}的实例传递给ParallelOptions.MaxDegreeOfParallelism
。
然而,这可能在其他机器上没有意义,这些机器可能拥有比您更多或更少的核心。通常,您应该让框架决定并行度。
答案 1 :(得分:25)
您可以传递ParallelOptions
MaxDegreeOfParallelism
属性设置为4。
答案 2 :(得分:13)
以下是那些对其他答案不满意的人的代码
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);
});