C++ 设置处理器与C++;它将在Linux上运行

C++ 设置处理器与C++;它将在Linux上运行,c++,process,processor,affinity,C++,Process,Processor,Affinity,可能重复: 我在Linux上运行,我想编写一个C++程序,它将设置2个特定的处理器,即我的2个并行运行的应用程序(即,设置每个进程在不同的内核/ CPU上运行)。我想使用C++的处理器亲和力工具。请大家帮忙用C++代码。 你需要调用或< /p> 另请参见您可以使用的命令行中的,或您可以使用的代码中的 例如 \ifdef\uuuuuuuuuuuuuu//linux仅限linux #包括//sched_setaffinity #恩迪夫 int main(int argc,char*argv[])

可能重复:

我在Linux上运行,我想编写一个C++程序,它将设置2个特定的处理器,即我的2个并行运行的应用程序(即,设置每个进程在不同的内核/ CPU上运行)。我想使用C++的处理器亲和力工具。请大家帮忙用C++代码。

你需要调用或< /p>
另请参见您可以使用的命令行中的,或您可以使用的代码中的

例如

\ifdef\uuuuuuuuuuuuuu//linux仅限linux
#包括//sched_setaffinity
#恩迪夫
int main(int argc,char*argv[])
{
#ifdef_uuuLinux__
int cpuAffinity=argc>1?原子(argv[1]):-1;
如果(cpuAffinity>-1)
{
cpu设置屏蔽;
智力状态;
CPU_零(和掩码);
CPU_集(CPU单元和掩码);
status=sched_setaffinity(0,sizeof(mask)和mask);
如果(状态!=0)
{
perror(“sched_setaffinity”);
}
}
#恩迪夫
//…您的程序。。。
}

您是否阅读了
sched_setaffinity
pthread_setaffinity\u np
的手册页(以及从命令行执行此操作的
taskset
)?如果是这样,你能描述一下你所遇到的问题吗?谢谢保罗,我想用C++来运行,而不是通过命令行。我不太确定如何使用int sched_setaffinity(pid_t pid,size_t cpusetsize,cpu_set_t*mask);int sched_getaffinity(pid_t pid,size_t cpusetsize,cpu_设置*mask);请你运行C++代码,我可以测试吗?非常感谢保罗,这就是我正在寻找的。
#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 ...
}