Посчитать бит-маску для ProcessorAffinity

Есть примерно такой метод

Process mproc = new Process();
mproc.StartInfo.FileName = "";
mproc.Start();
mproc.ProcessorAffinity = А как?;

Так вот,нужно посчитать битмаску для ProcessorAffinity на основе количества потоков

Что-то типа такого: всего 12 потоков,нужно ограничить до 6. Нужен метод,который сможет конвертировать 6 в то, что примет ProcessorAffinity


Ответы (1 шт):

Автор решения: aepot

С 1 по 6 ядро будет выглядеть как-то так

mproc.ProcessorAffinity = (nint)((1 << 6) - 1);

логика

1
0000001
<< 6
1000000
- 1
0111111

nint и IntPtr - одно и то же.

Process.ProcessorAffinity

→ Ссылка