C语言中的CPU数量限制
Posted
技术标签:
【中文标题】C语言中的CPU数量限制【英文标题】:Limit No. of CPU in C 【发布时间】:2011-05-21 07:43:18 【问题描述】:我在物理机和虚拟机上测试 c 代码,我需要限制编号。在执行 c 程序期间使用的 cpu。有没有办法做到这一点?
【问题讨论】:
【参考方案1】:对于 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 也有类似的功能。
【讨论】:
【参考方案2】:不独立于平台,但在 Windows 中,您可以使用SetProcessAffinityMask
:
SetProcessAffinityMask(GetCurrentProcess(), 0x1); //Only CPU #1
【讨论】:
以上是关于C语言中的CPU数量限制的主要内容,如果未能解决你的问题,请参考以下文章