3

可能重复:
CPU 关联性

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

4

2 回答 2

10

您可以从命令行使用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 ...
}
于 2011-12-13T08:43:26.353 回答
0

您需要调用sched_setaffinitypthread_setaffinity_np

另请参阅此问题

于 2011-12-13T08:43:17.543 回答