gpt4 book ai didi

c - 移动所有线程以使用其他 CPU 核心,以便一个线程可以使用其他 CPU 核心?

转载 作者:行者123 更新时间:2023-11-30 19:47:00 26 4
gpt4 key购买 nike

Linux 有许多跨(假设是 2 个)CPU 内核执行的线程和进程。我希望我的单线程 C/C++ 应用程序成为 CPU0 上的唯一线程。我如何“移动”所有其他线程以使用 CPU1?

我知道我可以使用 Linux CPU 调度函数来设置线程的关联性:

int sched_setaffinity(pid_t pid,size_t cpusetsize,cpu_set_t *mask);

但是我如何将所有其他线程推送到 CPU1 上?有没有一种相对简单的方法可以做到这一点?

我是否必须获取所有 pid 的列表,迭代将它们全部设置为 CPU1,然后将我的应用程序线程设置为 CPU0?

最佳答案

您这样做的想法似乎是正确的。不过我想提几点,应该仔细理解。

1.sched_setaffinity() 是对内核/调度程序(而不是命令)的请求,以选择允许该进程/线程执行哪些 CPU。进程的实际调度确实取决于许多其他复杂因素。

2.您提到您可以遍历所有 PID。这不是一个好主意,因为这样做您可能会尝试更改内核服务和 init 进程的调度。程序很可能没有足够的权限对​​这些进程执行此操作,但我们仍然不应该尝试更改这些进程的属性,因为我们不知道影响。

关于c - 移动所有线程以使用其他 CPU 核心,以便一个线程可以使用其他 CPU 核心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22775301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com