我正在测试物理和虚拟机上的c代码,我需要限制否。在执行c程序期间使用的cpu。有没有办法做到这一点?
答案 0 :(得分:6)
不是平台独立的,但在Windows中,您可以使用SetProcessAffinityMask
:
SetProcessAffinityMask(GetCurrentProcess(), 0x1); //Only CPU #1
答案 1 :(得分:6)
对于Linux,有sched_setaffinity
。例如,如果您希望它仅在CPU 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具有类似的功能。