同步与异步
同步
在多任务情况下,一个任务执行结束,才执行另一个任务,只有一条运行主线。
异步
异步是相对于同步而言的,在多任务情况下,多个任务执行时间没有先后顺序,可以同时运行,存在多条运行主线。
并发与并行
先贴一张图:
CUP时间概念图
在前面线程与进程梳理的梳理文章也介绍过CUP的工作模式。
https://www.jianshu.com/p/a2f1a2b98c42
并发和并行可以说是异步编程实现的两种模式,并发是一种伪异步,CUP会不断地去切换任务,由于这个切换速度很快,所以看起来就像多个任务在一起执行(就好像高速旋转的电扇在我们肉眼看起来就是一个‘完整’的圆面,事实上就以人类时间观来看,cup比电扇转的速度快很多很多很多很多)。而并发则是在多个CUP上执行开启多条线程让多个任务同时执行。
Erlang之父Joe Armstrong 解释并发与并行简单的来说,并发和并行都是处理多个任务(动作)的能力,而并发和并行的区别则是是否能同时去完成这些任务。
并行一定包含并发,并发不一定包含并行。
串行
它其实是同步线程的实现方式,就是任务一个个按顺序执行,前一个任务执行结束才能开始执行下一个任务,单个线程只能执行一个任务。
网友评论