限制C语言中的CPU数量

5

我在物理和虚拟机上测试了一段C代码,需要在执行C程序时限制使用的CPU数量。有没有办法做到这一点?

2个回答

6

虽然不是跨平台的,但在Windows中,您可以使用SetProcessAffinityMask函数:

SetProcessAffinityMask(GetCurrentProcess(), 0x1); //Only CPU #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也有类似的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接