限制C中的CPU数量

时间:2011-05-21 07:43:18

标签: c testing cpu execution

我正在测试物理和虚拟机上的c代码,我需要限制否。在执行c程序期间使用的cpu。有没有办法做到这一点?

2 个答案:

答案 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_setaffinitysched_getaffinity是特定于Linux的(在其他POSIX系统上不存在)。

在BSD上, cpuset_setaffinity 具有类似的语义。我希望Solaris具有类似的功能。