我在命令行使用cpuset(即http://man7.org/linux/man-pages/man7/cpuset.7.html)来运行C / C ++程序。
我想知道C / C ++是否能够检索它运行的cpuset。
我读过http://man7.org/linux/man-pages/man3/CPU_SET.3.html但我没有看到任何宏能够达到我想要的效果。
我想在程序中检索cpuset的主要原因是填充cpu_set_t *以便我可以将它传递给pthread_attr_setaffinity_np()。
提前致谢。
答案 0 :(得分:0)
U可以在CPU设置为
#define _GNU_SOURCE
#include <sched.h>
cpu_set_t my_set;
CPU_ZERO(&my_set);
CPU_SET(1, &my_set); // here 1 is the cpu 1 similarly u can set more
CPU_SET(2, &my_set); // here 2 is the cpu 2 similarly u can set more
pthread_setaffinity_np(pthread_self(), sizeof (cpu_set_t), &my_set);
答案 1 :(得分:0)
cpu_set_t cpuset;
CPU_ZERO(&cpuset);
if (0 == sched_getaffinity(getpid(), sizeof(cpu_set_t), &cpuset)) {
const long nCores = sysconf( _SC_NPROCESSORS_ONLN );
for (long i = 0; i < nCores; i++) {
if (CPU_ISSET(i, &cpuset)) {
std::cout << "core # " << i << " is in cpuset" << std::endl;
}
}
}
else {
std::cerr << "sched_getaffinity() failed: " << strerror(errno) << std::endl;
}