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

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

【讨论】:

【参考方案2】:

不独立于平台,但在 Windows 中,您可以使用SetProcessAffinityMask

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

【讨论】:

以上是关于C语言中的CPU数量限制的主要内容,如果未能解决你的问题,请参考以下文章

用C语言编程,如何查找一段文字(有英有汉)中的某些英文单词,并统计其数量

C语言中可否定义一个函数,这个函数的形参数量可以改变?

C语言如何画图

如何找出 Go 语言中的 CPU 数量?

运算中的临时匿名变量

C语言怎么把文件的内容读到链表里面?