欢迎来到天天文库
浏览记录
ID:8838460
大小:38.47 KB
页数:2页
时间:2018-04-09
《并发(concurrency)和并行(parallelism)的区别》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、并发(Concurrency)和并行(Parallelism)的区别最近在读《realworldhaskell》里关于并行的一章时,看到作者首先对并发(Concurrency)和并行(Parallelism)的区别进行了定义和解释。以前我对这个问题也是一知半解,如果有人问题这个问题,恐怕我只能挠头说不清楚。而在这本书里,作者的解释是(简单翻译):一个并发程序是指能同时执行通常不相关的各种任务。以一个游戏服务器为例子:它通常是有各种组件组成,每种组件都跟外部世界进行着复杂的信息交互。一个组件有可能要处
2、理多个用户聊聊;另外一些可能要处理用户的输入,并把最新状态反馈给用户;其它的用来进行物理计算。这些都是并发处理。并发程序并不需要多核处理器。相比之下,并行程序是用来解决一个单一任务的。以一个试图预估某支股票价格在下一分钟波动情况的金融组件为例,如果想最快速度的知道标普500中哪知股票应该卖出还是买进,你不能一个一个的计算,而是将这些所有的股票同时计算。这是并行。其实也不是很好懂,我自己琢磨了一下,大概是这个道理:并发就是一心二用(多用),比如你一边听老师讲课,一边低头看课桌下韩寒的小说。这两件事你在
3、同时做,而且这两件事并不一定需要相关。而并行就是兵分几路干同一个事情。比如别人看小说只能一行一行的看,而你能一目十行,这就是并行。:)。关于并发和并行的区别,Go语言有一个非常好的教材,叫做“并发不是并行”,它以Go语言为例,图文并茂的为我们讲解了并发和并行之间的联系和区别。文中使用地鼠烧书为例,通过设计出不同的并发装书、运书、烧书的流程来比较并发和并行技术的组合运用。原文是英文的,这里是外刊IT评论网翻译的中文版并发不是并行,供大家欣赏。(提示:这个教材使用HTML5技术做成了幻灯片的形式,所以你
4、需要使用支持HTML5的现代浏览器浏览。)并发不是并行
此文档下载收益归作者所有