[转载]并行与并发的区别
[转载]并行与并发的区别 本文转载自https://laike9m.com/blog/huan-zai-yi-huo-bing-fa-he-bing-xing,61/,仅做个人学习使用,侵权请联系删除 “并发” 指的是程序的结构,“并行” 指的是程序运行时的状态 并行(parallelism) 这个概念很好理解。所谓并行,就是 同时执行 的意思,无需过度解读。判断程序是否处于并行的 状态 ,就看同一时刻是否有超过一个 “工作单位” 在运行就好了。所以, 单线程永远无法达到并行状态 。 要达到并行状态,最简单的就是利用多线程和多进程。但是 Python 的多线程由于存在著名的 GIL,无法让两个线程真正 “同时运行”,所以实际上是无法到达并行状态的。 并发(concurrency) 要理解 “并发” 这个概念,必须得清楚, 并发指的是程序的 “结构” 。当我们说这个程序是并发的,实际上,这句话应当表述成 “这个程序采用了支持并发的设计”。好,既然并发指的是人为设计的结构,那么怎样的程序结构才叫做支持并发的设计? 正确的并发设计的标准是:使多个操作可以在重叠的时间段内进行 (two tasks can start, run, and complete in overlapping time periods) 。 这句话的重点有两个。我们先看 “(操作)在重叠的时间段内进行” 这个概念