2013-10-08 46 views
0

1)多进程和多核编程有什么区别?需要多核编程技巧和技巧

2)对于多线程,我们需要通过互斥锁和同步保存共享数据,那么在多核上运行的程序如何?

3)如果我在程序中有一个进程并在多核环境中运行它?处理会更快还是不行?

回答

0

1)我假设你是指通过多进程将一个程序分成多个进程(通常在POSIX系统中使用fork()方法完成),而不是多任务。多处理或多任务的通常定义是允许单个CPU看起来并行运行多个进程,通过它们之间进行切换。多核意味着单个CPU可以具有多个能够执行任务的内核,并且所有执行单元都以某种方式连接(取决于处理器的体系结构)。除非你编写非常低级的软件,例如操作系统,否则这些东西通常不会影响你的编程。分叉过程(我相信你的意思)通常是通过操作系统提供的一些方法完成的,实际上是一个巨大的话题,你可以找到很多书。

2)操作系统通常提供底层CPU体系结构的抽象,这意味着作为程序员不必关心你的PC是否有多核CPU或单核,所以如果你使用多线程,你仍然必须以同样的方式分享您的数据。如果您正在编写多核CPU的操作系统,那么事情变得越来越难,您将不得不阅读CPU支持的指令。 3)如果你的程序只有一个进程(并且没有线程),那么执行将(几乎)相同,无论它是在单核还是多核系统上运行。它可以从多核系统获得唯一的速度优势,从操作系统将其推到一个内核上,其中没有其他许多任务正在运行,从而以更少的任务交换机为其提供更多的CPU时间。使用多核系统的真正收益只能通过使用并行编程来实现。