Как запустить поток на конкретном ядре? - PullRequest
5 голосов
/ 05 июля 2011

У меня четырехъядерный процессор, и, скажем, я всегда хочу запустить Thread на втором ядре.

Возможно ли это в C #?

Ответы [ 3 ]

6 голосов
/ 05 июля 2011

Да, посмотрите на ProcessorAffinity property для темы.

3 голосов
/ 05 июля 2011

Да. Проверьте ProcessorAffinity для Windows или SetProcessorAffinity для XBox XNA.

Это также обсуждается в другом вопросе Stackoverflow .

0 голосов
/ 25 августа 2017

Набор ProcessorAffinity процесса:

0x0001 = 0000 0001 - run on 1st core
                 ↑
0x0002 = 0000 0010 - run on 2nd core
                ↑
0x0003 = 0000 0011 - run on 1st and 2nd core
                ↑↑
0x0004 = 0000 0100 - run on 3rd core
               ↑

Простой код:

using (var process = Process.GetCurrentProcess())
{
  // only run on core number 1
  process.ProcessorAffinity = (IntPtr) 0x0001;
}
...