Concurrency vs. Parallelism [并发和并行]
Published: Aug. 26, 2020
并发[concurrency]和并行[parallelism]是两个相关但是不完全相同的概念。
并发是指一个系统可以同时执行两个及以上的动作,但是这里的同时可能是指在一个时间段内完成,并不要求同时开始同时结束,所以Concurrency不会有Overlap。所以并发的一个典型例子就是时间片轮转,将一段完整时间分割成多份,然后用一定的方法分配给不同的动作来执行。并发操作的设计会考虑很多执行顺序以便实现预期效果。
并行也是指一个系统可以同时执行两个及以上的动作,但是这里的同时一般是指同时开始,而且多数情况下,同时执行的动作并不互相干扰,所以Parallelism会有Overlap。并行的一个典型例子就是多核多进程执行,每个进程可以单独执行一个程序。
Reference:
Figure from “An Introduction to Concurrency in Programming Languages” by J. Sottile, Timothy G. Mattson, and Craig E Rasmussen, 2010