问题
Possible Duplicate:
CPU Affinity
I'm running on Linux and I want to write a C++ program that will set 2 specific processors that my 2 applications that will run in parallel (i.e. setting each process to run on a different core/CPU). I want to use processor affinity tool with C++. Please can anyone help with C++ code.
回答1:
From the command line you can use taskset(1), or from within your code you can use sched_setaffinity(2).
E.g.
#ifdef __linux__ // Linux only
#include <sched.h> // sched_setaffinity
#endif
int main(int argc, char *argv[])
{
#ifdef __linux__
int cpuAffinity = argc > 1 ? atoi(argv[1]) : -1;
if (cpuAffinity > -1)
{
cpu_set_t mask;
int status;
CPU_ZERO(&mask);
CPU_SET(cpuAffinity, &mask);
status = sched_setaffinity(0, sizeof(mask), &mask);
if (status != 0)
{
perror("sched_setaffinity");
}
}
#endif
// ... your program ...
}
回答2:
You need to call sched_setaffinity or pthread_setaffinity_np
See also this question
来源:https://stackoverflow.com/questions/8486314/setting-processor-affinity-with-c-that-will-run-on-linux