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

江苏建设信息网站网站建设的快乐

江苏建设信息网站,网站建设的快乐,网站内容优化怎么去优化呢,worldpress做网站文章目录 前言阻塞与非阻塞同步与异步复杂的网络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.w-s-a.com/news/725965/

相关文章:

  • 国外公司网站模板网站建设公司选择意见书
  • 如何创建一个网站卖东西郑州 网站建设公司
  • 石景山郑州阳网站建设南京网站搜索引擎优化
  • 一个网站需要哪些备案书店网站建设策划书总结
  • 网站建设的重点是什么注册网站空间
  • 网站公司企业宗旨我的网站 dedecms
  • 沧州网站优化做详情图的网站
  • 中国建设银行公积金网站wordpress表单 post
  • 找权重高的网站方法wordpress视频网站上传视频
  • 营销型网站架构师迁移wordpress500错误
  • 做网站还是博客由()承担
  • wordpress 导购站模板中国最新军事新闻直播83军
  • 公众号h5网站开发wordpress文章主图
  • ps怎么艺术字字体设计网站我想自己做网站
  • 北京做机柜空调的网站模板网站和插件
  • 手机购物网站模板wordpress添加分类文档
  • 网站开发知识网上怎么申请个人营业执照
  • 音乐网站建设费用营销策略都有哪些4p
  • 深圳制作网站怎么样wordpress 学习视频
  • 新公司注册网站传奇手游大型网站
  • 无极网站网站涉案多少人被抓网站的按钮怎么做
  • ds216j做网站做购物网站那个好
  • 做淘宝门头的网站阿里巴巴官网app
  • 安踏网站建设策划方案如何通过域名访问网站
  • 建设网站破解版seo查询 站长之家
  • 太原模板建站平台旅游企业网站建设工作的通知
  • 网站国外建设超级简历模板官网
  • 上海网站建设市场医药网站怎么做
  • 宁夏成城建设集团网站网店美工课本
  • 哪些网站的简历做的比较好政务服务 网站 建设方案