2012-06-24 22 views
4

我已經安裝了NCrunch,它是用於(除其他之外)並行測試執行的工具。它提供了兩個設置MaxNumberOfUsedCores和MaxNumberOfUsedThreads。第一個設置看起來很有趣。我不記得任何可以控制用於執行代碼的核心的.NET手段。所以問題是如何做到這一點?控制並行執行的內核數量

+2

也許 - > http://stackoverflow.com/questions/2823076/forcing-an-app-to-run-single-core-only和http://stackoverflow.com/questions/3429999/force-c-尖銳的應用程序使用的-A-單核-IN-A-PC-與-A-多核processo –

回答

1

你試過ProcessThread.ProcessorAffinityProcessorAffinity將每個處理器表示爲。位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內核:NCrunch @ REMCO-穆德3

但是隻有筆者可以告訴我們,是真的還是假的。

btw:ReSharper有類似的選項來控制unittests的並行運行線程的數量。