设置与将在Linux上运行的C ++的处理器关联

时间:2011-12-13 08:38:51

标签: c++ process processor affinity

  

可能重复:
  CPU Affinity

我在Linux上运行,我想编写一个C ++程序,它将设置2个特定处理器,这两个处理器将并行运行(即设置每个进程在不同的核心/ CPU上运行)。我想在C ++中使用处理器关联工具。请任何人都可以使用C ++代码。

2 个答案:

答案 0 :(得分:10)

在命令行中,您可以使用taskset(1),也可以在代码中使用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 ...
}

答案 1 :(得分:0)