Предел № ЦП в C - PullRequest
       46

Предел № ЦП в C

5 голосов
/ 21 мая 2011

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

Ответы [ 2 ]

6 голосов
/ 21 мая 2011

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

cpu_set_t set;

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

sched_setaffinity(pid, CPU_SETSIZE, &set);

Внимание: sched_setaffinity и sched_getaffinity относятся к Linux (их нет в других системах POSIX).

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

6 голосов
/ 21 мая 2011

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

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