【问题标题】:Limit No. of CPU in CC语言中的CPU数量限制
【发布时间】:2011-05-21 07:43:18
【问题描述】:

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

【问题讨论】:

    标签: c testing cpu execution


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2014-07-27
        • 2021-01-08
        • 1970-01-01
        • 1970-01-01
        • 2021-09-25
        • 2017-01-25
        • 2016-08-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多