Предельный номер процессора в C

#c #testing #cpu #execution

#c #тестирование #процессор #выполнение

Вопрос:

Я тестировал код на c на физической и виртуальной машинах, и мне нужно ограничить количество процессоров, используемых во время выполнения программы на C. Есть ли способ сделать это?

Ответ №1:

Для Linux есть sched_setaffinity . Например, если вы хотите, чтобы он запускался только на процессорах 1 и 3:

 cpu_set_t set;

CPU_ZERO(amp;set);
CPU_SET(1, amp;set);
CPU_SET(3, amp;set);

sched_setaffinity(pid, CPU_SETSIZE, amp;set);
  

Внимание: sched_setaffinity и sched_getaffinity специфичны для Linux (они не существуют в других системах POSIX).

На BSD есть cpuset_setaffinity с аналогичной семантикой. Я ожидаю, что у Solaris будет аналогичная функция.

Ответ №2:

Не зависит от платформы, но в Windows вы можете использовать SetProcessAffinityMask :

 SetProcessAffinityMask(GetCurrentProcess(), 0x1); //Only CPU #1