怎样向贞洁的女朋友诠释并发与并行的区分?
2019-11-18杂谈搜奇网53°c
A+ A-原文链接:并发与并行的区分
如今我们都说设想可并行、高并发的顺序,而且我们许多时候会在潜意识里以为本身对并行(Parallelism)和并发(Concurrency)的区分很清楚,但假如要明白的说出两者的区分,又觉得没办法给出一个异常清楚的形貌。
那末什么是并发?什么又是并行呢?并行的观点比较简朴,并行老是和实行(executions)相干,许多东西同时实行就是并行;而并发则是经由过程一些体式格局构造你的顺序,让它能够分红多个模块去自力的实行。并行必定是须要多核的,一个处置惩罚器是没法并行的;但并发和处置惩罚器并没有什么必定联系,在一个处置惩罚器上面,我们的顺序也能够是并发的。
举个简朴的例子,华罗庚沏茶,必须有烧水、洗杯子、拿茶叶等步骤。如今我们想尽快做完这件事,也就是“一共要处置惩罚许多事变”,有许多要领能够完成并发,比方请多个人同时做,这就是并行。并行是完成并发的一种体式格局,但不是唯一的体式格局。我们一个人也能够完成并发,比方先烧水、然后不必等水烧开就去洗杯子,所以经由过程调解顺序运转体式格局也能够完成并发。
假如你以为以上的解说照样太笼统了,下面经由过程一个小故事来解说,故事原型来自 Go 言语创始人之一 Rob Pike 的一篇演讲。
故事的最先有一个需求:有一群地鼠要把一堆销毁的申明书用小推车推到火炉去销毁。
刚最先只要一只地鼠,运用一辆推车,将书装到车上,运输到火炉旁,将书卸到火炉。完成使命必定须要比较长的时候。
此时假如再增添一只地鼠,那也没什么用,由于一只地鼠在干活,另一只地鼠只能守候。(固然有人说两只地鼠轮番运用一辆推车,如许能够让地鼠获得歇息,如许它们干活更快,也能够进步效力。)
再找一辆推车来,两只地鼠离别运用各自的推车,将书装到车上,运输到火炉旁,将书卸到火炉。如许会进步运输效力,但它们会在装书和卸书时举行列队,降低了效力。
如许虽然比之前快了,但照样有瓶颈的。由于书只要一堆,火炉也只要一个,所以我们还必须经由过程音讯来谐和两只地鼠的行为。好吧,那我们再把书分红两堆,再增添一个火炉。
如许就比之前的效力高差不多一倍了。如今这个模子就是并发的,由于两只地鼠能够自力完成一件事了,如许进步了运输效力,而且在装书和卸书时不会举行列队,进步了装卸的效力。但这个模子不一定是并行的,比方统一时候能够只要一只地鼠在干活。
上面就是第一种并发模子,我们还能够设想更多的并发模子,继承看漫画。
此次找了 3 只地鼠,一只担任把书装到车上,一只担任运输,一只担任把书卸到火炉燃烧。每只地鼠做一个自力的使命,固然三只地鼠之间须要运用一些诸如音讯通讯之类的手腕举行谐和。
装书和烧书的两只地鼠都很轻松,担任运输的这只地鼠却很累,体系涌现了瓶颈。那我们再找一只地鼠来,特地担任运回空推车。
我们在一个已有的设想(指三个地鼠的谁人设想)中增加一个并发的步骤(第四只地鼠)增强了体系的机能。如许一来,两只地鼠去搞运输,假如谐和的好,理论情况下工作效力将是一只地鼠的 4 倍。
统共有 4 个并发的步骤:
- 把书装到车上;
- 把推车运到火炉旁;
- 把书卸到火炉里;
- 运回空推车。
能够再增添一个分组,将这个并发模子并行化。
下面我们再来看别的一种并发模子。担任运输的地鼠埋怨说运输旅程太长,那我们就增添一个中转站。
然后再增添一个分组,将这个并发模子并行化,两个分组并行实行。
能够把上面的并发模子再革新一下。增添中转站的同时,再增添两只地鼠,一只担任将从书堆运过来的书卸到中转站,另一只担任将书从中转站装到推车里,再让背面的地鼠运输到火炉旁。
然后再增添一个分组,将这个并发模子并行化。
漫画到这里就完毕了,统共引见了三种并发模子,每种模子都能够很容易地并行化。能够看到上面的并发模子每革新一次,实在就是将使命拆的更细了,一旦分解了问题,并发就自然而然产生了,每个人只专注于一个使命。
回到顺序中,书就代表着数据,地鼠就是 CPU,而车能够就是序列化、反序列化、收集等设备,火炉就是代办、浏览器或其他的消费者。而上面的并发模子就是一个可扩大的 Web Service。
该演讲问题为《Concurrency is not Parallelism》
,原文链接:
- 演讲幻灯片:https://talks.golang.org/2012/waza.slide
- 演讲视频:https://www.youtube.com/watch?v=cN_DpYBzKso&t=550s
参考链接
- https://my.oschina.net/3233123/blog/1047239
- https://blog.csdn.net/claram/article/details/52094587
微信民众号
扫一扫下面的二维码关注微信民众号,在民众号中复兴◉加群◉即可到场我们的云原生交换群,和孙嘹亮、张馆长、阳明等大佬一同讨论云原生手艺