Где Process
переменная proc
содержит интересующий вас процесс (Process.GetCurrentProcess()
для запущенного процесса, получение его из GetProcesses()
или GetProcessesByName()
и т. Д. Для другого процесса. Затем:
foreach(ProcessThread pt in proc.Threads)
{
pt.IdealProcessor = 0;
pt.ProcessorAffinity = (IntPtr)1;
}
IdealProcessor - это идентичность одного ядра с нуля. ProcessorAffinity является битовой маской, поэтому 1 допускает нулевое ядро, 2 разрешает ядро одно, 3 допускает нулевое ядро и одно, 4 разрешает ядро два и т. Д.
Я бы тщательно протестировал . Очень велики шансы, что это фактически повредит вашей производительности, уменьшив возможность использования различных ядер, что, в конце концов, обычно является преимуществом.