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