同步、异步、阻塞、非阻塞、并发、并行

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Kwoky/article/details/88175147

同步
同步就是发起一个请求,直到请求返回结果之后,才进行下一步操作。
简单来说,同步就是必须一件事一件事的做,等前一件做完了,才能做下一件事。

异步
当一个异步操作发出后,调用者在没有得到结果之前,可以继续执行后续操作。这就是异步。


同步和异步的区别:
请求发出后,是否需要等待请求结果,才能继续执行其他操作。


阻塞
在调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会被唤醒执行后续的操作。

非阻塞
在结果没有返回之前,该调用不会阻塞住当前线程。

讲故事啦~
任务:用水壶烧水,烧开后就去泡咖啡。

方式一同步阻塞:用水壶烧水,并且站在煤气灶旁边,啥事不干,两眼直勾勾的盯着水壶,等水烧开。烧开后就去泡咖啡。

方式二同步非阻塞:用水壶煮水,不过此时不再傻傻得站在那里看水开没开,而是去玩局LOL,每当自己死了,就过来看看水开了没有。如果水开了就去泡咖啡。

方式三异步阻塞:用响壶烧水,仍然站在煤气灶旁边,不过此时不两眼直勾勾的盯着壶了,而是听响,因为响壶水开时会用响声通知小A。

方式四异步非阻塞:用响壶烧水,然后是去玩局LOL,等听到响壶的声音提醒后,再去跑咖啡。

python 的 tornado 框架就是一种异步非阻塞框架。


并发:
并发:指应用能够交替执行不同的任务,
当有多个线程在一个CPU运行,操作系统只能把CPU运行时间划分成若干个时间段,再将时间段分配给各个线程执行,不同时间段,快速切换不同的线程代码运行。
例子:吃一口饭喝一口水

并行:指应用能够同时执行不同的任务
系统有多个CPU,执行多个线程,可以一个CPU执行一个线程,线程之间互不抢占CPU资源,可以同时进行。
例子:边听歌边上网

并发/并行:一个是交替执行,一个是同时执行.

猜你喜欢

转载自blog.csdn.net/Kwoky/article/details/88175147