一个线程可以绑定把两个CPU核吗

registercsdn 2018-11-06 09:05:06
1. 如果可以的话, 下面int cpu = 2 的部分怎么改?
  cpu_set_t cpuset; 

int cpu = 2;

CPU_ZERO(&cpuset); //clears the cpuset
CPU_SET( cpu , &cpuset); //set CPU 2 on cpuset
sched_setaffinity(0, sizeof(cpuset), &cpuset);


2. 这样有什么坏处吗,两个都可以用到吗?会浪费一个CPU核吗

3. 如果按照1来写的话,当前线程A只会运行在核2上,那么核2还会跑其他的线程吗?
当前线程A和核2是互相唯一绑定,还是线程A只能使用核2,但核2除了运行当前线程A还会运行其他?
...全文
834 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zy010101 2018-11-07
  • 打赏
  • 举报
回复
多核和多处理器不一样吧!
云山大侠 2018-11-07
  • 打赏
  • 举报
回复
不好意思,没研究那么深,只能告诉你CPU多核运算的时候是可以保持chche一致的。具体的实验啊什么的 我也没有做过。
registercsdn 2018-11-07
  • 打赏
  • 举报
回复
一个线程绑定2个核的话,计算量怎么分配?
哪些计算分配给第一个核,哪些计算分配第二个核?

用两个核来计算的好处是:
1:计算量可以分配给2个核来算;

坏处是:
1: 假如分配的不好,cache分配在2个核上,互相交换cache, 反而会降低速度。这样的话,操作系统是如何很聪明地管理这些事情?

引用 1 楼 sinat_37764097 的回复:
处理器管理是操作系统的活,你做了绑定只是提高cpu cache的命中率,减少内存访问的损耗,提高程序的运行速度,说白点,就是操作系统在做调度的时候,更偏向于你绑定的程序的进程,就是让某个CPU更倾向于干某件事,也是所谓的CPU亲和力。

1,可以同时提高多个CPU的亲和力,就像你可以同时和多个异性保持暧昧关系。
2,不会浪费,就像和你有暧昧关系的异性也可以和别人有暧昧关系。
3,当然还会跑其它线程,就像你除了和你对象配有说话,你就不跟别人说话了?
赵4老师 2018-11-06
  • 打赏
  • 举报
回复
《30天自制操作系统》
天外怪魔 2018-11-06
  • 打赏
  • 举报
回复
引用 4 楼 sinat_37764097 的回复:
不好意思,刚刚那条回复是看错了。 让一个CPU只做一件事,在宏观上是不可能做到的。 Linux中,你只提升进程的优先级,但是也做不到完全让一个CPU只干一件事,而且这也违背操作系统的设计初衷——让计算机能尽可能的多做事。
其实是可以的,你自己写OS即可。
天外怪魔 2018-11-06
  • 打赏
  • 举报
回复
这个没什么统一的标准吧,一般的程序谁主动要求跑哪个核啊?
云山大侠 2018-11-06
  • 打赏
  • 举报
回复
不好意思,刚刚那条回复是看错了。
让一个CPU只做一件事,在宏观上是不可能做到的。
Linux中,你只提升进程的优先级,但是也做不到完全让一个CPU只干一件事,而且这也违背操作系统的设计初衷——让计算机能尽可能的多做事。
云山大侠 2018-11-06
  • 打赏
  • 举报
回复
这个问题有点泛泛,一般而言,有几个核开几个线程的时候效率最高。
这个跟程序本身也有关系,怎么说呢,没有最好,只有最合适。
registercsdn 2018-11-06
  • 打赏
  • 举报
回复
使用什么方法还是让某个特定的CPU专门给某个线程用,假如我只想提高某个线程的速度,不希望这个CPU再去做别的工作。

引用 1 楼 sinat_37764097 的回复:
处理器管理是操作系统的活,你做了绑定只是提高cpu cache的命中率,减少内存访问的损耗,提高程序的运行速度,说白点,就是操作系统在做调度的时候,更偏向于你绑定的程序的进程,就是让某个CPU更倾向于干某件事,也是所谓的CPU亲和力。

1,可以同时提高多个CPU的亲和力,就像你可以同时和多个异性保持暧昧关系。
2,不会浪费,就像和你有暧昧关系的异性也可以和别人有暧昧关系。
3,当然还会跑其它线程,就像你除了和你对象配有说话,你就不跟别人说话了?
云山大侠 2018-11-06
  • 打赏
  • 举报
回复
处理器管理是操作系统的活,你做了绑定只是提高cpu cache的命中率,减少内存访问的损耗,提高程序的运行速度,说白点,就是操作系统在做调度的时候,更偏向于你绑定的程序的进程,就是让某个CPU更倾向于干某件事,也是所谓的CPU亲和力。

1,可以同时提高多个CPU的亲和力,就像你可以同时和多个异性保持暧昧关系。
2,不会浪费,就像和你有暧昧关系的异性也可以和别人有暧昧关系。
3,当然还会跑其它线程,就像你除了和你对象配有说话,你就不跟别人说话了?
jdgdf566 2018-11-06
  • 打赏
  • 举报
回复
有几个核开几个线程

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧