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

网站建设都有什么栏目上海网站建设的价格

网站建设都有什么栏目,上海网站建设的价格,公司网站怎么自己制作,php做网站导购模板文章目录 前言阻塞与非阻塞同步与异步复杂的网络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.dnsts.com.cn/news/174947.html

相关文章:

  • 政务网站建设目标wordpress主题背景图片
  • 如何做服装企业商城网站织梦建站和WordPress建站的优缺点
  • 中山网站制作公司海外购物网
  • 佛山优化网站网站建设的经济效益
  • 折800网站程序前端开发中英文网站怎么做
  • 重庆做商城网站设计地产公司网站建设方案
  • ps网站主页按钮怎么做装饰公司网站开发
  • 杨凌做网站网址嵌入式开发软件有哪些
  • 新手建站中国环球贸易网
  • 中国建设银行手机网站首页纯静态网站部署服务器
  • 网域高科学校网站管理系统门户网站建设与管理
  • 怎么查询一个网站从哪做的建设网站是否应当摊销
  • 自贡网站设计网站 绝对路径 相对路径
  • 福建住房和城乡建设局网站文昌网站建设 myvodo
  • 站长工具亚洲中文精品权威的网站建设
  • 网站建设需要的流程网站建设捌金手指花总六
  • pacharm做腾讯视频网站餐饮网站建设方案
  • 设计类专业网站百度网站上传
  • 做网站的时候遇到的问题王也道长头像无水印
  • 杭州网站设计步骤wordpress自定义邮件
  • 口碑好的定制网站建设服务商教学互动网站的设计
  • 如何利用微信进行企业网站推广建立校园网站
  • 网站建设方案解救苏州久远网络专做热血电影的网站
  • 个人网站 费用站长查询域名
  • 沈阳网 沈阳网站上海临平路网站建设
  • wordpress做视频播放网站wordpress easycode
  • led网站建设百度怎么收录网站
  • 佛山服务类网站建设新浪云wordpress
  • 江门做网站seo的seo信息优化
  • 盘锦做网站建设的怎么提高网站的访客量