Я установил NCrunch, который является инструментом (помимо прочего) для выполнения параллельных тестов. Он предоставляет два параметра MaxNumberOfUsedCores и MaxNumberOfUsedThreads. Первый сеттинг выглядит интригующим. Я не помню никаких средств .NET, которые позволяли бы управлять ядрами, которые используются для выполнения вашего кода. Итак, вопрос в том, как это сделать?
Контрольное количество ядер для параллельного выполнения
comment
возможно - ›stackoverflow .com / questions / 2823076 / и stackoverflow.com/questions/3429999/
- person Sebastian Piu   schedule 24.06.2012
Ответы (1)
Вы пробовали ProcessThread.ProcessorAffinity
? ProcessorAffinity
представляет каждый процессор как бит. Бит 0 представляет процессор один, бит 1 представляет процессор два и так далее. Например:
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: 0, 1, 2
- Количество ядер ЦП, назначенных Visual Studio: 3
Но сказать нам мог только автор NCrunch @ remco-mulder, правда это или нет.
btw: ReSharper имеет аналогичные возможности для управления количеством параллельно работающих потоков unittests.
person
Akim
schedule
25.07.2012