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

标签 c++ process processor affinity

<分区>

Possible Duplicate:
CPU Affinity

我在 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 ...
}

关于c++ - 设置处理器与将在 Linux 上运行的 C++ 的关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8486314/

相关文章:

处理器的代码解释和十进制比较

C++ - 有没有人有任何分析指针问题的技巧?

process - 作为批处理文件启动时更改进程名称

windows - 使用 taskkill/F 返回代码 0 终止进程

process - 操作系统 : Process State Transition Diagram

c# - 查询处理器无法启动并行查询执行所需的线程资源

C++ - 搜索带下划线的字符串时,行解析器停止

c++ - 模板内的编辑列表不保存

c++ - 如何在 openmp 中并行执行 while 和 while 循环?

c - Linux下动态加载库的地址范围