六星教育-swoole-1911期swoole基础概念和长连接
Posted muronggongsun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了六星教育-swoole-1911期swoole基础概念和长连接相关的知识,希望对你有一定的参考价值。
异步、同步、阻塞、非阻塞
【https://blog.csdn.net/qq_30169511/article/details/78206179】
可以分为两组:异步同步、阻塞非阻塞。这两组概念都是相对性的概念。
异步同步是相对于整个的过程(或者对象)而言,阻塞非阻塞是相对于其中的一个进程而言。
同步:我调用一个功能,如果没有获取到结果之前,我死等;【php代码运行,从上而下】
异步:调用一个功能,不需要知道结果,可以去干其他的事情,有结果了告诉我就行。
这里,好比:同步:alert一个结果,不关闭,就不能去做其他的事情;异步:下载个东西,我可以把下载扔在那里,我去干其他的事情,下载结束了,告诉我下载结束就可以。
阻塞:开始某个进程之后(程序开始运行),需要等待运行结果,如果没有结果出来,当前线程的会被挂起(线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行)。函数只有在得到结果之后才会返回。
【有人也许会把阻塞调用和同步调用等同起来,实际上他是不同的。对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。 例如,我们在socket中调用recv函数,如果缓冲区中没有数据,这个函数就会一直等待,直到有数据才返回。而此时,当前线程还会继续处理各种各样的消息。】
非阻塞:非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
例子:订单管理系统。客户点击生成订单,后面还有大量的操作【比如数据库的查询商品的有无,商品颜色,有的话要插入商品订单等】。如果使用同步,用户需要一直在那里等待,等后台将所有的操作结束。这严重的影响用户体验,并且进程还会阻塞,做不了其他的事情。这里,就需要用到异步非阻塞。先将订单生成,给客户一个反馈,而将后续的数据库查询等操作交给其他的程序来运行,也不会需要客户程序在哪里等待,形成很好的用户体验。这就是异步非阻塞的优势。
例子2:下载。用户在下载电影,如果是同步,那么用户只能在当前页面等待下载结束才可以去做别的事情,因为形成了阻塞,只能等待。用到异步非阻塞的话,可以把下载任务交给后台运行,而客户可以继续做别的事情,比如浏览其他网页。下载结束之后,给一个反馈结果就好
以上是关于六星教育-swoole-1911期swoole基础概念和长连接的主要内容,如果未能解决你的问题,请参考以下文章