控制并行执行的核心数

时间:2012-06-24 17:15:26

标签: .net ncrunch

我已经安装了NCrunch,它是(以及其他)并行测试执行的工具。它提供了两个设置MaxNumberOfUsedCores和MaxNumberOfUsedThreads。第一个设置看起来很有趣。我不记得任何允许控制用于执行代码的内核的.NET方法。所以问题是如何做到这一点?

1 个答案:

答案 0 :(得分:1)

你试过ProcessThread.ProcessorAffinity吗? ProcessorAffinity 代表每个处理器。位0表示处理器1,位1表示处理器2,依此类推。例如:

var currectProcess = System.Diagnostics.Process.GetCurrentProcess();

foreach(System.Diagnostics.ProcessThread thread in currectProcess.Threads) 
{ 
    // this could give you something similar to MaxNumberOfUsedCores 
    thread.ProcessorAffinity = (IntPtr)0x0007; // Valid processors: 1, 2, or 3
}

现在我在NCrunch进行了以下配置,看起来与之前的c#示例非常相似:

  • 分配给NCrunch的CPU核心:0,1,2
  • 分配给Visual Studio的CPU核心:3

但只有NCrunch @ remco-mulder的作者可以告诉我们,是不是真的。

btw:ReSharper有类似的选项来控制单元测试的并行运行线程数。