作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
我是一名优秀的程序员,十分优秀!