多核和多线程的一些疑问

kooyou68 2013-08-16 04:57:46
这个问题是我接触erlang后,就一直想了解的知识,只是一直忙于游戏开发,也没有时间静下心来好好学习。今天兴趣来了,也赶紧的学习恶补一下。希望大家能给我扫扫盲,谢谢了。
问题:
1、一个多线程的进程是否只能同时在一个处理器上运行?该情况在windows和linux操作系统上有何异同?
意思是说,同属于一个进程的多个线程,能否同时在不同的处理器上运行?
2、如果整个系统当前只有一个进程在运行,但是该进程有很多个线程,那么这些线程会被分到不同的处理器运行吗?
...全文
349 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
max_min_ 2013-10-18
  • 打赏
  • 举报
回复
1 是的 2 不会
深夜航船 2013-10-17
  • 打赏
  • 举报
回复
1.首先在linux上可以设置每个线程的cpu affinity来将线程绑定到特定的cpu core上运行,而且在linux上,线程和进程本来就没什么大的区分,内部实现机制基本一样。同属于一个进程的多个线程完全可以在不同的cpu core上运行, 要不然就没有什么并行程序这个说法了。windows也是有cpu affinity的。 2.如果是靠linux操作系统自身的分配机制, 那么同一个进程的多个线程也会被分到不同的cpu core上运行, 这个主要根据cpu是否空闲。
YTerrenceLau 2013-10-14
  • 打赏
  • 举报
回复
线程是任务调度的最小单位,因此,同一进程的多个线程可以被分发到多个处理器上并行执行。 对于你的问题: 1,多线程可以同时在多个处理器上执行,windows中内核就是基于线程调度的,而linux的线程则采用轻量进程方式实现的,但不管怎么实现的,都是可以在多核上并行执行。 2,可以被分发。
hannah_zzz 2013-09-23
  • 打赏
  • 举报
回复
呃,按我做的项目来看,是不固定的。 我做的一个进程有三个线程,但是从任务管理器的性能中来看,这三个线程是由操作系统按系统当前状况(各CPU的负荷量等,个人觉得)来分配的,在8个CPU间跳变。 如果你想固定在某个CPU上执行,可考虑用cpu affinity对进程和线程进行设置。 ps:我做的是windows的,linux就不知道了。。。。。
modyaj 2013-08-21
  • 打赏
  • 举报
回复
个人理解: 1.是,线程隶属于近进程,进程的处理器都没变,线程的当然也没变 2.默认情况下应该不会,但是经过共享或者通信之类的技术是可以实现分配的, 顶起来,等高手回答,我也想知道

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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