C语言限制CPU数量

发布于 2024-11-09 00:20:02 字数 62 浏览 2 评论 0原文

我正在物理机和虚拟机上测试交流代码,我需要限制数量。 C 程序执行期间使用的CPU 数量。有办法做到这一点吗?

I was testing a c code on a physical and virtual machine and i need to limit the no. of cpu used during execution of c program. Is there a way to do this ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

蓝海似她心 2024-11-16 00:20:02

对于 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 也有类似的功能。

For Linux there is sched_setaffinity. For instance if you want it to run just on CPUs 1 and 3:

cpu_set_t set;

CPU_ZERO(&set);
CPU_SET(1, &set);
CPU_SET(3, &set);

sched_setaffinity(pid, CPU_SETSIZE, &set);

Caution: sched_setaffinity and sched_getaffinity are Linux-specific (they don't exist on other POSIX systems).

On BSDs there is cpuset_setaffinity with similar semantics. I expect Solaris to have a similar feature.

傲世九天 2024-11-16 00:20:02

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

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

Not platform-independently, but in Windows, you can use SetProcessAffinityMask:

SetProcessAffinityMask(GetCurrentProcess(), 0x1); //Only CPU #1
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文