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

setting processor affinity with C++ that will run on Linux

本文关键字:运行 C++ 相关性 Linux 处理器 设置      更新时间:2023-10-16

可能的重复项:
CPU 关联性

我在 Linux 上运行,我想编写一个C++程序,该程序将设置 2 个特定的处理器,我的 2 个应用程序将并行运行(即将每个进程设置为在不同的内核/CPU 上运行(。我想将处理器关联性工具与C++一起使用。请任何人都可以帮助C++代码。

在命令行中可以使用 taskset(1(,或者在代码中使用 sched_setaffinity(2(。

例如

#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 ...
}
你需要

调用sched_setaffinity或pthread_setaffinity_np

另请参阅此问题