深刻浅出理解同步 /异步/并发/并行/串行

(1)从线程的时效来看:分为同步和异步node

同步:多个任务状况下,一个任务A执行结束,才能够执行另外一个任务B。只存在一个线程。多线程

异步:多个任务状况下,一个任务A正在执行,同时能够执行另外一个任务B。任务B不用等待任务A结束才执行。存在多条线程。并发

(2)从线程的执行来看:分为串行队列和并行队列异步

串行队列:串行队列的特色是队列内的线程是一个一个执行,直到结束。async

并行队列:并行队列的特色是队列中全部线程的执行结束时必须是一块的,队列中其余线程执行完毕后,会阻塞当前线程等待队列中其余线程执行,而后一块执行完毕。spa

(3)线程的时效与执行相结合:.net

图片来源:https://blog.csdn.net/l540675759/article/details/62932901线程

(1)串行同步 
图1是串行同步的状况,队列中的线程依次执行,而且主线程阻塞,等待任务的完成。blog

(2)并行同步 
图3是并行同步的状况,队列中的线程,会一块儿执行,可是同一时段只能有一个线程执行其余线程等待,等全部任务执行完,主线程继续执行。队列

同步(单线程)的串行并行区别在于:

1.并行增长了等待时间,若是等待时间到了,任务还在执行,那么,从新设置等待时间,继续等待,无论等待的时候线程是否有空闲。

2.串行是对线程进行阻塞,一个任务执行完毕,线程再也不阻塞,因此,不存在等待时间。

(3)串行异步 
图2是串行异步的状况,队列中的线程依次执行,同时主线程还在继续执行。

(4)并行异步 
图4是并行异步的状况,队列中的线程,一块儿执行,主线程也会继续执行。

异步(多线程)的串行并行区别在于:

1.串行异步只占用两个线程,一个主线程,不会阻塞的线程,一个次线程,执行原理和同步串行同样。

2.并行异步占用N个线程,多核CUP能够同时开启多条线程供多个任务同时执行,互不干扰。

 

(4)同步的并行即为并发(常见于es7的async await与node的单线程)。

相关文章
相关标签/搜索