本文基于Rob Pike 大神的观点做解读
Concurrency(并发):Programming as the composition of independently executing processes.(将相互独立的执行过程综合到一起的编程技术。)
Parallelism(并行):Programming as the simultaneous execution of (possibly related) computations. (同时执行(可能是相关的)计算任务的编程技术。)
Concurrency is about dealing with lots of things at once. (并发是指同时处理很多事情。)
Parallelism is about doing lots of things at once. (并行是指同时能做很多事情。)
Concurrency is about structure. (并发关乎结构。)
Parallelism is about execution. (并行关乎执行。)
They are Not the same, but related. (他们不相同,但是有关系。)
首先从程序设计结构上分析:考虑了并发 (在同一时间应对多个任务)
但在执行过程中:不存在并行 (在同一时间执行多个任务)
从程序设计结构上分析:符合同一时间应对多个任务 并发
从执行过程中分析:线程1和线程2可以同时执行 符合同一时间执行多个任务 是并行
并发是指:组合多个独立执行过程的编程技术,同时处理很多事情,并发更多的倾向于结构。
并行是指:同时执行多个计算任务的编程技术,能同时做很多事情,并行更多倾向于执行。
不同点:
- 并发更偏向于应对同一时间的事情,并行更偏向于执行同一时间的事情。
- 并发在程序的设计和实现阶段,并行在程序的执行阶段。
联系:并发相当于是并行的基石,有强大的基石并行才能实现。
参考:
博客
https://tonybai.com/2015/06/23/concurrency-and-parallelism/
Rob Pike 大神的演讲
https://www.bilibili.com/video/BV1EN411o7FY/?vd_source=76abf9bb9bc20b6aa372445fc31a2d96