码迷,mamicode.com
首页 > 其他好文 > 详细

【六星教育-swoole-1911期】swoole基础概念和长连接

时间:2019-12-12 13:07:04      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:tar   大量   mil   优势   关闭   family   连接   代码   处理   

异步、同步、阻塞、非阻塞

https://blog.csdn.net/qq_30169511/article/details/78206179

可以分为两组:异步同步、阻塞非阻塞。这两组概念都是相对性的概念。

异步同步是相对于整个的过程(或者对象)而言,阻塞非阻塞是相对于其中的一个进程而言。

 

同步:我调用一个功能,如果没有获取到结果之前,我死等;【php代码运行,从上而下】

异步:调用一个功能,不需要知道结果,可以去干其他的事情,有结果了告诉我就行。

这里,好比:同步:alert一个结果,不关闭,就不能去做其他的事情;异步:下载个东西,我可以把下载扔在那里,我去干其他的事情,下载结束了,告诉我下载结束就可以。

 

阻塞:开始某个进程之后(程序开始运行),需要等待运行结果,如果没有结果出来,当前线程的会被挂起(线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行)。函数只有在得到结果之后才会返回。

【有人也许会把阻塞调用和同步调用等同起来,实际上他是不同的。对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。 例如,我们在socket中调用recv函数,如果缓冲区中没有数据,这个函数就会一直等待,直到有数据才返回。而此时,当前线程还会继续处理各种各样的消息。】

非阻塞:非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

例子:订单管理系统。客户点击生成订单,后面还有大量的操作【比如数据库的查询商品的有无,商品颜色,有的话要插入商品订单等】。如果使用同步,用户需要一直在那里等待,等后台将所有的操作结束。这严重的影响用户体验,并且进程还会阻塞,做不了其他的事情。这里,就需要用到异步非阻塞。先将订单生成,给客户一个反馈,而将后续的数据库查询等操作交给其他的程序来运行,也不会需要客户程序在哪里等待,形成很好的用户体验。这就是异步非阻塞的优势。

例子2:下载。用户在下载电影,如果是同步,那么用户只能在当前页面等待下载结束才可以去做别的事情,因为形成了阻塞,只能等待。用到异步非阻塞的话,可以把下载任务交给后台运行,而客户可以继续做别的事情,比如浏览其他网页。下载结束之后,给一个反馈结果就好

【六星教育-swoole-1911期】swoole基础概念和长连接

标签:tar   大量   mil   优势   关闭   family   连接   代码   处理   

原文地址:https://www.cnblogs.com/muronggongsun/p/12028439.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!