`
liguocai2009
  • 浏览: 31281 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

并发和并行

阅读更多
今天我终于确定我要在java上狠狠下功夫,因为我别无选择。

现在的目标是做一个能够让数据库互相通讯、交换数据的工具,在设计的时候考虑了多线程的问题,于是一个老问题又跑出来的--并发(concurrent)和并行(parallel)。

1 记忆的问题
  翻译的人很有“才”--我们难以区分“发”和“行”的含义啊!为什么不翻译作实同时和伪同时?现在这样理解好了,“行”字有有“平行”的笔画,所以是parallel,“发”就是“伪同时”,因为“伪”,所以“发”,奸商哈哈。
2 比较
  宏观上看二者是一样的效果,但微观上,并发是把时间切分成时间片,每个任务分别占用不同的时间片。

下面是某人的详细讲解,大家鼓掌:
引用

随着多核时代的来临,我们越来越多地听到“并发”(concurrent)、“并行”(parallel)这样的词汇
。然而这两个术语究竟的区别究竟在哪里,似乎大家并没有一致意见。

“并行”是指无论从微观还是宏观,二者都是一起执行的,就好像两个人各拿一把铁锨在挖坑,一小时后,每人一个大坑。
而“并发”在微观上不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行,从宏观外来看,好像是这些进程都在执行,这就好像两个人用同一把铁锨,轮流挖坑,一小时后,两个人各挖一个小一点的坑,要想挖两个大一点得坑,一定会用两个小时。
从以上本质不难看出,“并发”执行,在多个进程存在资源冲突时,并没有从根本提高执行效率。
所有的并发处理都有排队等候,唤醒,执行至少三个这样的步骤.所以并发肯定是宏观概念,在微观上他们都是序列被处理的,只不过资源不会在某一个上被阻塞 (一般是通过时间片轮转),所以在宏观上看多个几乎同时到达的请求同时在被处理。如果是同一时刻到达的请求也会根据优先级的不同,而先后进入队列排队等候 执行。

-------------------------------------------------------------

并发与并行是两个既相似而又不相同的概念:并发性,又称共行性,是指能处理多个同时性活动的能力;并行是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行,也亦是说并发事件之间不一定要同一时刻发生。

-------------------------------------------------------------

并发和并行的区别仅仅在发生时刻的不同吗?
举个例子理解一下,如:
假设有A、B 两个事件
并行:
如果A和B都在15:30同时发生,A 的运行时间为 5 分钟,B 的运行时间为 8 分钟
在前5分钟是并行,也包括并发,因为他们都是在同一时刻发生的
并发:
如果A在15:30发生,运行3分钟后,B事件发生,在以后的5分钟时间里,A和B 是并发的

-------------------------------------------------------------

并发,是在同一个cpu上同时(不是真正的同时,而是看来是同时,因为cpu要在多个程序间切换)运行多个程序。
并行,是每个cpu运行一个程序。
打个比方,并发,就像一个人(cpu)喂2个孩子(程序),轮换着每人喂一口,表面上两个孩子都在吃饭。
并行,就是2个人喂2个孩子,两个孩子也同时在吃饭。


从汉语的角度讲,“并发”与“并行”似乎没有什么本质差别;至于从英语的角度

讲,"concurrent"和"parallel"有没有差别我就不太清楚了。但是,从计算机科学的角度看,这两个术语

还是有本质差别的。

在我看来,所谓“并发”,是指一个过程在 **逻辑上** 是由许多同时执行的线索组成的,但是在 **物理

上** 这些线索不一定是同时执行的。比如在单处理器机器上,我们的进程、线程只能并发,不能并行。至

于“并行”,则恰恰相反,是指一个过程在 **物理上** 包含了许多同时进行的工作,但是在 **逻辑上**

并不一定是包含许多同时执行的线索的。比如我们在大规模科学计算领域总是听到“将程序并行化”之类

的说法,就是因为认为这些算法在逻辑上是串行的,只是在实现的时候进行了并发优化。另外一个例子来

自教科书"Computer Architecture: a quantitative approach",它里面大量地叙述了如何开发“指令级

并行”和“线程级并行”,就是因为这些内容是针对在物理上同时处理指令的。

当然,一个系统也可以既是并发的又是并行的,例如在多处理器系统上面的多线程(或多进程)web服务器

就是这样。至此,我们发现“并发”和“并行”这两个极为接近的术语竟然含义是正交的,完全不相关!

在科学界,类似这样的例子还有不少,比如“精确”和“准确”这两个词,在《大学物理试验》课程中就

辨析过,前者是指标准差小,而后者指均值与真值接近,呵呵,又是正交的概念。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics