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

2013-05-28 16:36:51 +08:00
 zhangxiao
多核之间的交互是cpu自己完全搞定,还是应用程序自己也需要注意?
另外就是自己的程序,怎么能跑在多core上?需要注意什么?谢谢
3538 次点击
所在节点    问与答
7 条回复
tarsier
2013-05-28 16:45:34 +08:00
应该是OS来管理如何使用多核吧

linux应用程序可以通过系统调用sched_setaffinity来指定在哪几个核心上调度
Zhang
2013-05-28 16:50:15 +08:00
cpu的多个核心几乎不可能同时处理几项相关的任务!比如:收割今年的小麦,用今年的小麦打面粉,用今年的面粉烤面包这三件事情是不可能同时发生的!但是,收割今年的小麦,用去年的小麦打面粉,用千年的面粉烤面包这三件事情就可以同时进行!CPU不可能有这种智商判断哪些事能同时进行,哪些事不能!但是,人脑就能。所以多核编程只能完全依赖程序员本身了。挺悲剧的吧?
tarsier
2013-05-28 16:52:54 +08:00
@Zhang 要是cpu都能把这些干嘛,还要程序员干嘛,都下岗了吧
otakustay
2013-05-28 17:24:26 +08:00
@Zhang,但是可以让3个人同时去收小麦,同时去打面粉,同时做面包,好过一个人收小麦的时候另外2个在旁边聊天,这个事系统调度是能做的吧?那么相比1个人收小麦,1个人用去年的小麦打面粉,1个人用去年的面粉做面包,效率上一定会差?
aliuwr
2013-05-29 15:07:14 +08:00
系统会处理 CPU 之间的调度,一般来讲,应用程序无需在意,
多线程的程序才能体现出多个 Core 的优势
aliuwr
2013-05-29 15:18:11 +08:00
修正下前面的话,一般 CPU 的调度由 OS 来进行,
使用多个 Core 的前提是,你的程序是多线程的。
需要注意的就是多线程中的问题,比如资源共享,死锁等。
ThunderEX
2013-05-29 15:41:24 +08:00
我还以为自己来了知乎……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/70418

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX