并行和并发的区别
2021-12-13 本文已影响0人
梁帆
首先要明确,这两者的英文名称也是不一样的。
- 并行:parallellism
- 并发:concurrency
一、并行(parallellism)
指在同一时刻,有多条指令在多个处理器上同时执行。
所以无论从微观还是从宏观来看,二者都是一起执行的。
并行
二、并发(concurrency)
指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。
并发
三、与处理器的关系
并行(parallellism)只在多处理器系统中存在。
在一个单核系统中,是没有办法做到真正的并行(parallelism)的;只要当一个系统是多核的情况下,当一个CPU执行线程1时,另一个线程可以执行线程2,两者之间才能真正互不抢占CPU资源。也才能做到真正的并行:parallelism。
并行(concurrency)可以在多处理器或者单处理器的系统中存在。
我们知道在单核的情况下,CPU是不可能真正同时执行一个以上的线程的,但是它可以把 CPU 运行时间划分成若干个时间段,再将时间段分配给各个线程执行。这样在一个时间段的线程代码运行时,其它线程处于挂起状态,在你的观察视角足够宏观的情况下,能达到多个线程同步并列执行的假象。这就是并发:concurrency。