并发与并行的区别与联系(并发)
并发与并行的区别与联系(并发)再回到厨房的例子里去,现在我们有两个厨师,一个负责照看烤箱,而另一个专职切生菜,这样我们通过多加一个厨师的方式来分拆任务。并行图例并发就是在同一个时间间隔里执行多个任务。这里的重点是:任务并没有必要在同一时间里执行。这些任务可以被分解成多个小的任务,然后穿插在一起执行。并发图例厨房是并发发生的一个好的地方。想象一下,一个厨师在厨房里又是切生菜又要时不时的检查烤箱里的东西。他必须停止切菜,然后检查烤箱,然后停止检查烤箱,才能去切菜,重复这几个过程,直到事情都做完。
https://monades.roperzh.com/concurrency-is-different-than-parallelism/?utm_source=wanqu.co&utm_campaign=Wanqu Daily&utm_medium=website
我很喜欢听Carl Hewitt谈论计算机,有一句话他经常挂在嘴边“并发不是并行”。对我来说,他们并没有本质区别,老实说,我也从来没有费心想去深挖他们的区别。
上周,我苦于不理解Rob Pike的关于这个话题的演讲,就去花时间研究了这个东西,以下是我的一些发现。
注意:就跟生活中的大部分其他事情一样,很多人都认为并发和并行之间并没有本质的区别。
并发:并发就是在同一个时间间隔里执行多个任务。这里的重点是:任务并没有必要在同一时间里执行。这些任务可以被分解成多个小的任务,然后穿插在一起执行。
并发图例
厨房是并发发生的一个好的地方。想象一下,一个厨师在厨房里又是切生菜又要时不时的检查烤箱里的东西。他必须停止切菜,然后检查烤箱,然后停止检查烤箱,才能去切菜,重复这几个过程,直到事情都做完。
并行图例
再回到厨房的例子里去,现在我们有两个厨师,一个负责照看烤箱,而另一个专职切生菜,这样我们通过多加一个厨师的方式来分拆任务。
并行是并发的子集,在你想要同时执行多个任务之前,你必须要管理这些任务。