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

漳州城乡住房建设部网站/网站推广软件

漳州城乡住房建设部网站,网站推广软件,网站建设具备什么条件,医疗网页设计服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(Blocking IO):即传统的IO模型。(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意…

e4a305c6f82e863b55ef06e226656e83.png

服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:

(1)同步阻塞IO(Blocking IO):即传统的IO模型。

(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。

(3)IO多路复用(IO Multiplexing):即经典的Reactor设计模式,有时也称为异步阻塞IO,Linux中的epoll都是这种模型。

(4)异步IO(Asynchronous IO):即经典的Proactor设计模式,也称为异步非阻塞IO。

同步和异步的概念描述的是用户线程与内核的交互方式:同步是指用户线程发起IO请求后需要等待或者轮询内核IO操作完成后才能继续执行;而异步是指用户线程发起IO请求后仍继续执行,当内核IO操作完成后会通知用户线程,或者调用用户线程注册的回调函数。

阻塞和非阻塞的概念描述的是用户线程调用内核IO操作的方式:阻塞是指IO操作需要彻底完成后才返回到用户空间;而非阻塞是指IO操作被调用后立即返回给用户一个状态值,无需等到IO操作彻底完成。

另外,Richard Stevens 在《Unix 网络编程》卷1中提到的基于信号驱动的IO(Signal Driven IO)模型,由于该模型并不常用,本文不作涉及。接下来,我们详细分析四种常见的IO模型的实现原理。为了方便描述,我们统一使用IO的读操作作为示例。

  1. IO多路复用     

要弄清问题先要知道问题的出现原因

原因:

由于进程的执行过程是线性的(也就是顺序执行),当我们调用低速系统I/O(read,write,accept等等),进程可能阻塞,此时进程就阻塞在这个调用上,不能执行其他操作.阻塞很正常.

接下来考虑这么一个问题:一个服务器进程和一个客户端进程通信,服务器端read(sockfd1,bud,bufsize),此时客户端进程没有发送数据,那么read(阻塞调用)将阻塞,直到客户端调用write(sockfd,but,size)发来数据.在一个客户和服务器通信时这没什么问题;

当多个客户与服务器通信时当多个客户与服务器通信时,若服务器阻塞于其中一个客户sockfd1,当另一个客户的数据到达套接字sockfd2时,服务器不能处理,仍然阻塞在read(sockfd1,...)上;此时问题就出现了,不能及时处理另一个客户的服务,咋么办?

I/O多路复用来解决!

I/O多路复用:

b80fd869ade94f753c6c3c6d8295a2b1.png

a77cdcbb603afe4de45ec935fa97d5c5.png

继续上面的问题,有多个客户连接,sockfd1,sockfd2,sockfd3..sockfdn同时监听这n个客户,当其中有一个发来消息时就从select的阻塞中返回,然后就调用read读取收到消息的sockfd,然后又循环回select阻塞;这样就不会因为阻塞在其中一个上而不能处理另一个客户的消息

Q:

那这样子,在读取socket1的数据时,如果其它socket有数据来,那么也要等到socket1读取完了才能继续读取其它socket的数据吧。那不是也阻塞住了吗?而且读取到的数据也要开启线程处理吧,那这和多线程IO有什么区别呢?

A:

1.CPU本来就是线性的不论什么都需要顺序处理并行只能是多核CPU

2.io多路复用本来就是用来解决对多个I/O监听时,一个I/O阻塞影响其他I/O的问题,跟多线程没关系.

3.跟多线程相比较,线程切换需要切换到内核进行线程切换,需要消耗时间和资源.而I/O多路复用不需要切换线/进程,效率相对较高,特别是对高并发的应用nginx就是用I/O多路复用,故而性能极佳.但多线程编程逻辑和处理上比I/O多路复用简单.而I/O多路复用处理起来较为复杂.

2. 五种I/O模型介绍

IO 多路复用是5种I/O模型中的第3种,对各种模型讲个故事,描述下区别:

故事情节为:老李去买火车票,三天后买到一张退票。参演人员(老李,黄牛,售票员,快递员),往返车站耗费1小时。

1.阻塞I/O模型

老李去火车站买票,排队三天买到一张退票。

耗费:在车站吃喝拉撒睡 3天,其他事一件没干。

2.非阻塞I/O模型

老李去火车站买票,隔12小时去火车站问有没有退票,三天后买到一张票。

耗费:往返车站6次,路上6小时,其他时间做了好多事。

3.I/O复用模型

1.select/poll

老李去火车站买票,委托黄牛,然后每隔6小时电话黄牛询问,黄牛三天内买到票,然后老李去火车站交钱领票。 

耗费:往返车站2次,路上2小时,黄牛手续费100元,打电话17次

2.epoll

老李去火车站买票,委托黄牛,黄牛买到后即通知老李去领,然后老李去火车站交钱领票。 

耗费:往返车站2次,路上2小时,黄牛手续费100元,无需打电话

4.信号驱动I/O模型

老李去火车站买票,给售票员留下电话,有票后,售票员电话通知老李,然后老李去火车站交钱领票。 

耗费:往返车站2次,路上2小时,免黄牛费100元,无需打电话

5.异步I/O模型

老李去火车站买票,给售票员留下电话,有票后,售票员电话通知老李并快递送票上门。 

耗费:往返车站1次,路上1小时,免黄牛费100元,无需打电话

1同2的区别是:自己轮询

2同3的区别是:委托黄牛

3同4的区别是:电话代替黄牛

4同5的区别是:电话通知是自取还是送票上门

http://www.lbrq.cn/news/1367479.html

相关文章:

  • nh网站建设/网络上如何推广网站
  • 南京做网站南京乐识专注/郑州关键词优化费用
  • 通知中心app下载/西安网络推广seo0515
  • 网站建设网站设计/百度网页游戏中心
  • 网站优化方式有哪些/如何自己做推广
  • 自己做的网站如何制作后台/国外网络推广
  • 怎么做flash网站/深圳百度首页优化
  • dw如何做网站/宁波seo推广联系方法
  • 有多少做汽车的网站/宁波seo快速排名
  • 中山做展示型网站/购物网站
  • 网站icp备案是什么/怎么做网站教程视频
  • 用div css做网站第一步/上海比较大的优化公司
  • 网站建设职位/爱站网关键词长尾挖掘
  • wordpress html代码/上海优化seo公司
  • 编程 毕业设计代做网站/win7优化大师下载
  • 免费做二维码网站/新手怎么引流推广推广引流
  • 莒县建设局门户网站/在线资源搜索神器
  • 谷歌seo搜索/句容市网站seo优化排名
  • 南阳建设网站招聘/怎样建立自己的网站平台
  • 网站建设类文章/郑州网站推广公司电话
  • 自己做装修网站/关键词优化公司排名
  • seo优化案例/网站优化及推广方案
  • iis搭建本地网站/广州商务网站建设
  • 设计网站如何推广/产品推广策划方案
  • 怎么注销网站/东莞网站推广策划
  • 电子商务有限公司官网/seo外链论坛
  • 广东东莞寮步疫情最新情况/河北seo技术
  • 沈阳软件公司 网站制作/上海网络推广平台
  • 怎么介绍做网站技术/东莞seoseo关键词排名优化
  • 张槎网站设计/线下营销方式主要有哪些
  • 专网内网IP攻击应急与防御方案
  • 基于图像识别与分类的中国蛇类识别系统
  • 涉水救援机器人cad【12张】三维图+设计书明说
  • 在纯servlet项目中,使用@WebFilter定义了多个filter,如何设置filter的优先级
  • 【深度学习①】 | Numpy数组篇
  • 德国威乐集团亚太中东非洲PMO负责人和继明受邀为PMO大会主持人