并发(Concurrency)和并行(Parallelism)的区别_最新动态_新闻资讯_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 新闻资讯 > 最新动态 > 并发(Concurrency)和并行(Parallelism)的区别

并发(Concurrency)和并行(Parallelism)的区别

 2013/11/7 11:11:26    程序员俱乐部  我要评论(0)
  • 摘要:最近在读《realworldhaskell》里关于并行的一章时,看到作者首先对并发(Concurrency)和并行(Parallelism)的区别进行了定义和解释。以前我对这个问题也是一知半解,如果有人问题这个问题,恐怕我只能挠头说不清楚。而在这本书里,作者的解释是(简单翻译):一个并发程序是指能同时执行通常不相关的各种任务。以一个游戏服务器为例子:它通常是有各种组件组成,每种组件都跟外部世界进行着复杂的信息交互。一个组件有可能要处理多个用户聊聊;另外一些可能要处理用户的输入
  • 标签:all 区别
class="topic_img" alt=""/>

  最近在读《real world haskell》里关于并行的一章时,看到作者首先对并发(Concurrency)和并行(Parallelism)的区别进行了定义和解释。以前我对这个问题也是一知半解,如果有人问题这个问题,恐怕我只能挠头说不清楚。而在这本书里,作者的解释是(简单翻译):

一个并发程序是指能同时执行通常不相关的各种任务。以一个游戏服务器为例子:它通常是有各种组件组成,每种组件都跟外部世界进行着复杂的信息交互。一个组件有可能要处理多个用户聊聊;另外一些可能要处理用户的输入,并把最新状态反馈给用户;其它的用来进行物理计算。这些都是并发处理。

并发程序并不需要多核处理器

相比之下,并行程序是用来解决一个单一任务的。以一个试图预估某支股票价格在下一分钟波动情况的金融组件为例,如果想最快速度的知道标普 500 中哪知股票应该卖出还是买进,你不能一个一个的计算,而是将这些所有的股票同时计算。这是并行。

  其实也不是很好懂,我自己琢磨了一下,大概是这个道理:并发就是一心二用(多用),比如你一边听老师讲课,一边低头看课桌下韩寒的小说。这两件事你在同时做,而且这两件事并不一定需要相关。而并行就是兵分几路干同一个事情。比如别人看小说只能一行一行的看,而你能一目十行,这就是并行。:) 。

  关于并发和并行的区别,Go 语言有一个非常好的教材,叫做“并发不是并行”,它以 Go 语言为例,图文并茂的为我们讲解了并发和并行之间的联系和区别。

并发不是并行original="http://www.aqee.net/wordpress/wp-content/uploads/2013/11/gophercomplex6-560x230.jpg" />

  文中使用地鼠烧书为例,通过设计出不同的并发装书、运书、烧书的流程来比较并发和并行技术的组合运用。原文是英文的,这里是外刊 IT 评论网翻译的中文版并发不是并行,供大家欣赏。(提示:这个教材使用 HTML5 技术做成了幻灯片的形式,所以你需要使用支持 HTML5 的现代浏览器浏览。)

发表评论
用户名: 匿名