2010-11-11 36 views
12

它们都是同一件事吗?看几何中的并行或并行意味着什么,我会定义为:并行编程与并行编程相同吗?

在几何学中,如果两条或多条线相交于单点,则称它们是并发的。

两条线在一个平面上不 相交或相遇被称为并行 线。

再次,在编程中,它们有相同的含义吗?如果是...为什么?

由于

+0

+1优秀的问题。在http://programmers.stackexchange.com/上可能更好吗? '程序员 - Stack Exchange适用于对软件开发的主观讨论感兴趣的专家程序员。' – 2010-11-11 02:59:17

+0

@JohnK我不认为这些定义是主观的。 – 2012-01-07 18:44:50

回答

6

我同意几何词汇表存在冲突。想想火车轨道:两列平行轨道的列车可以独立运行,同时很少或不需要互动。这些列车并行运行。

基本的使用困难是“并发”可以意味着“同时”(与火车或代码)或“在同一地点”(与几何线)。对于许多实际目的(火车,线程资源),这两个概念直接冲突。

自然语言是假设是愚蠢的,模棱两可和混乱。但我们是程序员。我们可以在我们的正式编程语言的清晰,简单和优雅中避难。像Perl一样。

+2

+1因为经过深思熟虑,但最后一句肯定是开玩笑吧? – 2010-11-11 03:08:02

3

维基百科:

并行计算是 计算的一种形式,其中程序是 设计为交互 计算过程,可能是 并行执行的集合。

基本上,如果程序由较小的交互过程组成,程序可以编写为并发程序。并行编程实际上是在同时进行这些过程。

所以我认为并发编程是一种真正的风格,它可以自己并行执行进程来提高性能。

2

不,绝对并发不同于并行。这正是如何。

并发是指在同一时间框架内共享资源。例如,多个进程可能共享相同的CPU或共享内存或I/O设备。

现在,根据定义,如果只有第二个进程在第一个终止之前(在同一个CPU上)开始执行,那么两个进程是并发的。如果两个进程同时运行 - 比如现在说 - 单核CPU,进程是并行的,但不是并行的:在这种情况下,并行只是虚拟的,指的是OS在执行分时操作。操作系统似乎正在同时执行多个进程。如果只有一个单核CPU,则在任何特定时间只能执行一个进程的一条指令。由于人类时间尺度比现代计算机慢数十亿倍,因此操作系统可以在进程之间快速切换,以便同时执行多个进程的外观。

如果您改为在两个不同的CPU上运行这两个进程,则这些进程是并行的:在同一时间帧内没有共享,因为每个进程都在它自己的CPU上运行。在这种情况下的并行性不是虚拟的,而是物理的。这里值得注意的是,在同一个多核CPU的不同内核上运行仍然不能被归类为完全并行,因为这些进程将共享相同的CPU缓存,甚至会争用它们。