当前位置:  技术问答>linux和unix

在多核CPU下,同一进程下的多个线程可以并行运行吗?

    来源: 互联网  发布时间:2016-04-19

    本文导语:  在多核CPU下,同一进程下的多个线程可不可以并行运行,是不是一个进程下的所有线程都在同一个cpu上运行? | 如果是内核线程(就是fork出来的,pthread_create在2.4后最终也用fork,具体参看其...

在多核CPU下,同一进程下的多个线程可不可以并行运行,是不是一个进程下的所有线程都在同一个cpu上运行?

|
如果是内核线程(就是fork出来的,pthread_create在2.4后最终也用fork,具体参看其实现),那么可以调度到多cpu,内核支持线程的诱导因素之一就是可以利用多cpu资源进行并行计算;如果是用户线程,那么就不能在多cpu上并行计算了,用户库线程的弊端之一就是不能利用多cpu资源;具体到调度,就是当内核发现本cpu没有任何可运行线程时,就会去别的忙cpu上拽几个下来,当然这是内核自发进行的多cpu调度,作为用户也可以自觉地将线程邦定到具体cpu,更加确定的利用多cpu,当然什么都不是任其发展的,内核不能随便从哪个忙cpu上拽线程,还要看线程愿不愿意(参见linux内核函数cpuset_cpus_allowed),另外还要考虑smt(在intel平台即超线程)的兄弟cpu,还要考虑numa,你总不能让本地cpu的线程跑到遥远的cpu上运行吧.....(还有很多好玩的,自己看代码吧)
  以上扯的都是linux的实现,是我对代码的总结,感兴趣可自行阅读。至于windows平台,道道就更多了(windows的道道总是能把你搞晕,不过玩玩挺好,挺有趣,比如动态优先级提升之类的),它甚至可以让内核线程运行在一个专门cpu上,别的用户线程分享别的cpu(linux也可以做到,但是有意思吗?).....
  希望能解决lz的问题,如有不明:qq:23870617。本人专注操作系统,呵呵,愿结志同道合之士

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教多核与多处理器的问题
  • 多核编程框架 FastFlow
  • 多核编程框架 Threading Building Blocks (TBB)
  • 熟悉,openmp多核编程的帮下忙
  • 多核CPU或多CPU的单个CPU使用率如何取得?
  • gcc3.2 + 2.4.20不支持多核编译?
  • 高性能多核 BLAS 库 OpenBLAS
  • 有关定时器在多核CPU上运行的一个问题?
  • 多核编程框架 openMP
  • Shell脚本实现把进程负载均衡到多核CPU中
  • android获取手机cpu并判断是单核还是多核
  • 国产纯Java多核体系结构模拟器 Archimulator
  • 一段代码,在单核/多核环境下运行,结果不一样,求高手解释!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3