再次深入学习并发,并行,串行,同步,异步

Erlang 之父 Joe Armstrong 用一张5岁小孩都能看懂的图解释了并发与并行的区别

 

这是从众多资料中找到找到最生动形象的一个解释

一切从这幅图开始说起

什么是并发?

一个处理器同时处理多个任务。就像上图的小人,每一队小人都是一个线程,并发强调的是多个任务可以分步执行,注意是可以,不是一定。

所以所谓的并发编程其实就是指的提高单个处理器单位时间内处理多个任务的效率问题。

方式有很多,你可以选择开多线程,把流程拆分成更多的小单元,保证每个小单元之间互不影响的执行,这就是异步

当然可能这些流程没有办法进行拆分,必须要保证流程一致执行,所以不开启多线程,这就是同步

在同步条件下,并发编程好像就变成了一个处理器同一时间处理一个业务的问题,这就是串行

什么是并行?

并行,就是指多个处理器在同一时间处理多个任务,强调的是多个处理器的执行,是物理上的。

 

一个设计为并发的程序结构(注意这句话,并发是一种程序设计结构,干的就是拆分流程这件事),当运行的系统是一个多处理器系统时,

它可能就不执行并发操作,这时候很可能就变成了并行。

posted @ 2018-01-25 23:01  一介書生  阅读(300)  评论(0)    收藏  举报