编程学习网 > PHP技术 > swoole > swoole面试题:说说你对阻塞、非阻塞的理解
2021
07-10

swoole面试题:说说你对阻塞、非阻塞的理解

本文将给大家分享swoole面试题之同步、异步、阻塞、非阻塞的理解

同步异步:说的是kernel返回处理信息的方法策略


针对程序中碰到耗时任务时,传递给Kernel  Kernel处理信息的方式  有异步api函数是异步 没的话是同步

IO立即返回:主函数中(task函数) 传递任务信息给Kernel,Kernels收到(onTask函数),这个耗时任务我完成之后我会再告诉你的(onFinish) 这是异步

IO完成之后返回:这个是同步 就是一个return即可!

堵塞非堵塞:说的是应用程序执行耗时任务的状态 

针对的是程序中碰到耗时任务主程序的运行会不会wait 

不wait就是非堵塞  wait就是堵塞  是说的一个程序的一个任务点状态!

例子
小张喜欢喝咖啡,同时养了好多狗;
要完成的事情:小张煮咖啡然后喝咖啡
1.小张:  application
2.咖啡壶:kernel 内核
3.煮咖啡:耗时任务
4.小狗大黑:查询信息流 send() rev()
5.小狗大黄:查询信息流 send() rev()
6.小狗大白大红:查询信息流 send() rev()  
 
同步阻塞:
小张派大黑去看咖啡煮好没,大黑等咖啡煮开了(同步)才回来,
小张也一直在等待(堵塞) ;
 
同步非阻塞:
小张派大黄去看咖啡煮好没,大黄看了一眼就回来了,过了一会,大黄再去看看咖啡煮好没(异步),
小张啥也没有干,还是一直等着(同步)
 
异步非阻塞:
小张派大白和大红去看咖啡煮好没,煮咖啡是task,小张就开始看电视了(非堵塞)
大白和大红到了厨房后,大白就回来告诉小张,大红已经到厨房啦(onTask异步);
过了一会咖啡煮好了,大红回到客厅告诉小张(onFinish)
 
异步阻塞:
小张派大白和大红去看咖啡煮好没,煮咖啡是task,小张心很急非要一直等着 就开始等着信息(堵塞)
大白和大红到了厨房后,大白就回来告诉小张,大红已经到厨房啦,咖啡煮着呢 (onTask异步);
过了一会咖啡煮好了,大红回到客厅告诉小张(onFinish)
小张这才放松了,继续干其他的了!感觉有些焦虑啊!
图示




 



从上面的图可以看出来,其实不管是任何模式,内核的处理方式都是一样的,都是
1. wait for data(等待数据);
2. copy data from kernel to user(拷贝数据到用户层)。
而产生这三种模式的差别在于中间使用的api函数不同。
以上就是“swoole面试题:说说你对阻塞、非阻塞的理解”的详细内容,想要获取更多swoole教程欢迎关注编程学习网

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取