同步与异步、并发与并行、串行简单梳理

同步与异步

同步

在多任务情况下,一个任务执行结束,才执行另一个任务,只有一条运行主线。

异步

异步是相对于同步而言的,在多任务情况下,多个任务执行时间没有先后顺序,可以同时运行,存在多条运行主线。


并发与并行

先贴一张图:


CUP时间概念图

在前面线程与进程梳理的梳理文章也介绍过CUP的工作模式。

https://www.jianshu.com/p/a2f1a2b98c42

并发和并行可以说是异步编程实现的两种模式,并发是一种伪异步,CUP会不断地去切换任务,由于这个切换速度很快,所以看起来就像多个任务在一起执行(就好像高速旋转的电扇在我们肉眼看起来就是一个‘完整’的圆面,事实上就以人类时间观来看,cup比电扇转的速度快很多很多很多很多)。而并发则是在多个CUP上执行开启多条线程让多个任务同时执行。

Erlang之父Joe Armstrong 解释并发与并行

简单的来说,并发和并行都是处理多个任务(动作)的能力,而并发和并行的区别则是是否能同时去完成这些任务。
并行一定包含并发,并发不一定包含并行。


串行

它其实是同步线程的实现方式,就是任务一个个按顺序执行,前一个任务执行结束才能开始执行下一个任务,单个线程只能执行一个任务。

你可能感兴趣的:(同步与异步、并发与并行、串行简单梳理)