当前位置: 首页 > news >正文

南宁网站建设服务公司龙之向导外贸向导

南宁网站建设服务公司,龙之向导外贸向导,岳阳网站平台设计,微信企业网站模板文章目录 前言阻塞与非阻塞同步与异步复杂的网络IO真正的异步IOIO分类与示例总结 前言 这几个名词在程序开发时经常听到#xff0c;但是突然问起来各个词的含义一时间还真是说不清楚#xff0c;貌似这几个词都是翻译过来的#xff0c;每个人的解释都不太一样#xff0c;我… 文章目录 前言阻塞与非阻塞同步与异步复杂的网络IO真正的异步IOIO分类与示例总结 前言 这几个名词在程序开发时经常听到但是突然问起来各个词的含义一时间还真是说不清楚貌似这几个词都是翻译过来的每个人的解释都不太一样我对这几个词的理解也不是一成不变的随着开发经验的积累渐渐有了自己的记忆方式所以总结一下不一定准确有问题可以一起聊一聊。 先说说我的结论阻塞与非阻塞是指等待执行结果时的状态同步与异步是指获取执行结果的方式读起来有点绕口听起来也迷迷糊糊的没关系我们用具体的例子来说明应该就容易理解了。 阻塞与非阻塞 先说说『阻塞与非阻塞是指等待执行结果时的状态』这一句是说在执行某个操作或者某个函数时在没有拿到我们想要的结果时我们的状态是怎样的如果是一直等就是【阻塞】的如果发现没有结果就去做别的事情了就是【非阻塞】的。 以常见的网络IO为例服务器对客户端连接的socket调用read函数试图获取客户端发送的请求数据但是客户端并不总是有数据发送过来所以想要获得数据我可以采用【阻塞】方式一直等也可以采用【非阻塞】方式在发现此时没有数据时就先去干别的事一会再来看看。 同步与异步 再来说说『同步与异步是指获取执行结果的方式』这一句以游戏中的常见升级发奖为例可以主动调用升级函数在执行完成后返回升级的结果然后根据结果来发奖励也就是【同步】写法也可以注册一个监听等级变化的回调函数注册完我就不管了当升级时会将升级的结果通过回调函数传回来这就是【异步】处理方式。 复杂的网络IO 为什么同步和异步没有用网络IO来举例呢因为网络IO这里的情况更加复杂虽然你注册了回调函数但它很可能是个同步IO究竟怎么回事一起来看看。 我们知道要想从IO读取数据需要经历「内核数据准备好」和「数据从内核态拷贝到用户态」两个过程还是以read函数为例如果设置为阻塞模式相当于read函数等待了「内核数据准备好」和「数据从内核态拷贝到用户态」两个过程然后取到IO数据如果设置成非阻塞模式当内核数据没准备好会直接返回也就是不会等待第一个过程但是当数据准备好时会直接等待第二个过程完成后将结果数据返回。 所以无论是否阻塞我们都等待了第二个阶段等着它执行完成后获取结果所以这两种都是同步IO。 那作为IO多路复用里的“一哥”epoll也是同步IO吗是的那封装了select/poll/epoll的libevent可是用了Reactor模式支持事件回调它也是同步IO吗是的 真正的异步IO 有点惊呆了不是吗那究竟什么是异步IO呢还真有Windows 里实现了一套完整的支持 socket 的异步编程接口 IOCP而 Linux 是在 2019 年 5.1 版本 内核首次引入的高性能异步I/O 框架 io_uring我确实都没用过感兴趣的可以试一下 是否是异步IO就看「数据从内核态拷贝到用户态」这个过程需不需要等待如果需要逻辑层自己等待这个过程取数据就是同步IO如果这个过程都不用等调用回调函数时已经把内核态的数据拷贝出来并且通过回调将数据进行了回传这就是异步IO。 IO分类与示例 所以总结下来一共有这么几种同步阻塞IO同步非阻塞IO异步IO为啥不区分异步阻塞IO和异步非阻塞IO呢你在阻塞时搞个异步试试办不到吧所以异步只能与非阻塞搭配也就习惯只写异步IO了。 一顿理论讲下来可能还是比较抽象那我们再举个日常生活中的例子比如中午买饭的过程 同步阻塞IO就好像你去食堂吃面条但是你去这一锅面条还没煮好然后你就一直在那里等啊等等了一段时间终于做好了数据准备的过程但是你还得继续等工作人员把面条内核空间打到你的餐盘里用户空间才能找个桌子开始吃饭。 同步非阻塞IO就好像你又去食堂吃饭问大叔饭做好了没有告诉你没有你就离开了过了一会你又来饭堂问大叔饭做好了吗人家说说做好了于是你等着把饭打到你的餐盘里后面这个过程你是得等待的。 异步IO就好像你在十分焦急的写BUG这时到饭点肚子饿了给食堂大叔打电话等饭做好了麻烦给我送一份等到饭好了真的送来直接就能吃了一直在抓紧写BUG中间没有等待做梦中 我想大部分同学吃午饭都是第一种同步阻塞IO吧第二种同步非阻塞IO可能也有但是不是要重新排队啊如果是第三种异步IO的情况我只能说大哥/姐我跟你混了~~ 总结 IO分为同步阻塞IO同步非阻塞IO异步IO三类异步IO有Windows平台的 IOCP 和 Linux 平台的 io_uring从IO读取数据需要经历「内核数据准备好」和「数据从内核态拷贝到用户态」两个过程分析阻塞和非阻塞看是否等待第一个过程分析同步与异步看是否等待第二个过程 反爬链接请勿点击原地爆炸概不负责 人生的岔路口不知是机会还是风险边走边看吧毕竟路还是在脚下空想也到不了终点~
http://www.hkea.cn/news/14494933/

相关文章:

  • 如何网站客户案例旅游社网站建设规划书
  • 有哪些企业可以做招聘的网站有哪些方面wordpress 站群插件
  • 成都高投建设开发有限公司网站学校网站源码
  • html5网站演示潮汕学院网站开发
  • 动漫做暧昧视频网站软件开发步骤包括哪些
  • 进入百度官网首页重庆seo网站建设
  • 托管网站是什么意思刚进外贸公司一个月多少钱
  • 网站建设预估费用社区问答网站开发
  • 网站建设 - 碧诺网络威海公司注册
  • 如何制作自己网站可口可乐软文营销案例
  • 贵州省建设厅网站造价工程信息做外贸月薪3万要多久
  • 住房建设部投诉网站西安工程网站建设
  • 扬州市广陵区城乡建设局网站达州注册公司
  • app小程序网站开发是什么持续推进网站建设
  • 网站分页js关于网站建设的技巧
  • 做会议活动的网站电商网站怎样做
  • 公司推广发帖网站怎么做新闻专业为啥学网页制作
  • 建网站浩森宇特暴雪游戏有哪些
  • 企业网站开发市场网站建设课设心得体会
  • 做众筹网站h5移动端网站模板
  • 河东做网站的公司政协网站法治建设版块
  • 企业网站建设基本标准阿里巴巴的网站架构
  • 国家信用信息公示系统官网天津如何做seo优化服务
  • 关于网站开发的学校上海传媒公司总裁李闪闪
  • 卸载西部数码网站管理助手贵阳仿站定制模板建站
  • 发布建设网站黑河市建设局网站
  • 切实加强门户网站建设长春财经学院
  • 博客网站开发报告上海外贸50强企业
  • 网站建设与管理课程标准门户网站的基本特征多选题
  • 广东专业商城网站建设如何做英文系统下载网站