在讲解并发概念时,总会涉及另外一个概念并行。下面让我们来了解并发和并行之间的区别。
- 并发(concurrency):把任务在不同的时间点交给处理器进行处理。在同一时间点,任务并不会同时运行。
- 并行(parallelism):把每一个任务分配给每一个处理器独立完成。在同一时间点,任务一定是同时运行。
两个概念的区别是:任务是否同时执行。举一个生活中的例子:打电话和吃饭。
吃饭时,电话来了,需要停止吃饭去接电话。电话接完后回来继续吃饭,这个过程是并发执行。
吃饭时,电话来了,边吃饭边接电话。这个过程是并行执行。
GO 语言在 GOMAXPROCS 数量与任务数量相等时,可以做到并行执行,但一般情况下都是并发执行。