V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zhangxiao
V2EX  ›  问与答

CPU多核,多线程具体是指啥?

  •  
  •   zhangxiao · 2013-05-28 16:36:51 +08:00 · 3512 次点击
    这是一个创建于 3994 天前的主题,其中的信息可能已经有所发展或是发生改变。
    多核之间的交互是cpu自己完全搞定,还是应用程序自己也需要注意?
    另外就是自己的程序,怎么能跑在多core上?需要注意什么?谢谢
    7 条回复    1970-01-01 08:00:00 +08:00
    tarsier
        1
    tarsier  
       2013-05-28 16:45:34 +08:00
    应该是OS来管理如何使用多核吧

    linux应用程序可以通过系统调用sched_setaffinity来指定在哪几个核心上调度
    Zhang
        2
    Zhang  
       2013-05-28 16:50:15 +08:00
    cpu的多个核心几乎不可能同时处理几项相关的任务!比如:收割今年的小麦,用今年的小麦打面粉,用今年的面粉烤面包这三件事情是不可能同时发生的!但是,收割今年的小麦,用去年的小麦打面粉,用千年的面粉烤面包这三件事情就可以同时进行!CPU不可能有这种智商判断哪些事能同时进行,哪些事不能!但是,人脑就能。所以多核编程只能完全依赖程序员本身了。挺悲剧的吧?
    tarsier
        3
    tarsier  
       2013-05-28 16:52:54 +08:00
    @Zhang 要是cpu都能把这些干嘛,还要程序员干嘛,都下岗了吧
    otakustay
        4
    otakustay  
       2013-05-28 17:24:26 +08:00
    @Zhang,但是可以让3个人同时去收小麦,同时去打面粉,同时做面包,好过一个人收小麦的时候另外2个在旁边聊天,这个事系统调度是能做的吧?那么相比1个人收小麦,1个人用去年的小麦打面粉,1个人用去年的面粉做面包,效率上一定会差?
    aliuwr
        5
    aliuwr  
       2013-05-29 15:07:14 +08:00
    系统会处理 CPU 之间的调度,一般来讲,应用程序无需在意,
    多线程的程序才能体现出多个 Core 的优势
    aliuwr
        6
    aliuwr  
       2013-05-29 15:18:11 +08:00
    修正下前面的话,一般 CPU 的调度由 OS 来进行,
    使用多个 Core 的前提是,你的程序是多线程的。
    需要注意的就是多线程中的问题,比如资源共享,死锁等。
    ThunderEX
        7
    ThunderEX  
       2013-05-29 15:41:24 +08:00
    我还以为自己来了知乎……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1069 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 1044ms · UTC 18:19 · PVG 02:19 · LAX 11:19 · JFK 14:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.