限制C中的CPU数量

Jat*_*mar 5 c testing cpu execution

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

Meh*_*dad 6

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

SetProcessAffinityMask(GetCurrentProcess(), 0x1); //Only CPU #1
Run Code Online (Sandbox Code Playgroud)


cni*_*tar 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);
Run Code Online (Sandbox Code Playgroud)

注意:sched_setaffinity并且sched_getaffinity是特定于Linux的(在其他POSIX系统上不存在).

在BSD上有cpuset_setaffinity类似的语义.我希望Solaris具有类似的功能.