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

临沂地区建站网站网站开发 相册

临沂地区建站网站,网站开发 相册,网站建设服务费税率多少,苏州网站制作电话目录 什么是IO多路复用#xff1f; select: 参数介绍#xff1a; select函数返回值#xff1a; fd_set类型#xff1a; 内核如何更新集合中的标志位 处理并发问题 处理流程的步骤#xff1a; poll: poll的函数原型#xff1a; 参数介绍#xff1a; select与p…目录 什么是IO多路复用 select: 参数介绍 select函数返回值 fd_set类型 内核如何更新集合中的标志位  处理并发问题 处理流程的步骤  poll: poll的函数原型 参数介绍 select与poll的区别 什么是IO多路复用 一种网络通信的手段IO多路复用可以同时监测多个文件描述符且这个过程是阻塞的当检测有文件描述符就绪程序的阻塞就会解除就可以通过这些就绪的文件描述符进行通信。通过这种方式在单线程/进程的场景下也可以在服务器端实现并发。常见的IO多路转接方式有select、poll、epoll。 select: 该函数是跨平台的检测文件描述符的读写状态 这三个指针是指向三个文件描述符集合的指针。 参数介绍 nfds:是在这三个文件描述符集合中找出一个最大的文件描述符再1 内核中需要线性遍历这些集合中的文件描述符该值是循环结束的条件该参数在windows中无效指定为-1即可readfds:读集合一般都是需要进行检测的这样才能知道哪些文件描述符可以接收数据writefds:内核只检测这个集合中的文件描述符对应的写缓冲区如果不使用该参数可以用NULL指定exceptfds:内核只检测这个集合中的文件描述符是否有异常状态如果不使用该参数可以用NULL指定timeout:是表示检测文件描述符的时间超过该时间函数返回。超长时长用来解除select函数的阻塞 等待固定时长如果函数检测不到就绪的文件描述符在指定时长过后就会解除堵塞如果设定为NULL检测不到就绪的文件描述符就会一直阻塞不等待时长检测不到就绪的文件描述符就会直接返回不会阻塞  select函数返回值 0返回集合中就绪的文件描述符的个数0超时没有检测到就绪的文件描述符1函数调用失败 fd_set类型 fd_set类型的数据拥有1024个字节也就是128个比特位这个可以把他想象成一个整型的数组大小为32。 fd_set中存储了要委托内核检测读缓冲区的文件描述符集合。 如果集合中的标志位为0表示不检测这个文件描述符状态如果集合中的标志位为1表示检测这个文件描述符状态 内核如何更新集合中的标志位  假设需要检测读集合是否有文件描述符触发传入内核中的集合在此之前做初始化之后再传入内存中的数据拷贝到内核中内核检测拷贝的数据检测完后把满足条件的文件描述符重新写入到该内存中可以理解为内核需要更新fd_set中的数据 把文件描述符中fd3,fd5,fd6,fd8,fd9,fd10,fd11设置到fd_set文件描述符集合中再通过select函数将文件描述符集合传递给内核内核把传入的集合拷贝一份数据拷贝的过程内核基于拷贝出来的集合做线性检测内核通过拷贝的集合与文件描述符表做对比文件描述符表的每个文件描述符具有两个缓冲区读和写的缓冲区检测读缓冲区是否有数据内核基于拷贝的该线性表把需要检测的文件描述符的读缓冲区检验一遍把满足条件的文件描述符再重新写入指定的内存中 写集合也是一样的道理 以上函数能够实现把文件描述符存储到fd_set这个集合中/把已经存储的文件描述符从集合中删除等对该表的一系列增删查改  处理并发问题 处理流程的步骤  创建套接字绑定本地IP端口建立监听对需要检测的文件描述符做初始化前三步完成后拥有一个监听的文件描述符 监听的文件描述符用于检测是否有客户端连接若客户端有连接请求文件描述符会把发送进来存储到用于监听的文件描述符的读缓冲区中创建一个fd_set的读集合并初始化把标记为初始化为0再通过fd_set把监听的文件描述符对应的标志位设置为1调用select进行检测 select调用一次只检测一次需要多次检测需要写入到循环中返回值为-1或者0即可做异常处理 0:文件描述符如果是监听的描述符大于0表示有新的客户端连接到达 调用accept与客户端建立连接不会阻塞内核已检测完并知道文件描述符中是有数据的得到通信的文件描述符把得到的文件描述符放入读集合中如果不进行下一轮的检测服务端则不知道客户端有新的数据到达检测到通信的文件描述符调用recv接收数据 返回值 0:客户端断开连接调用close关闭通信的套接字紧接着调用fd_clr函数删除0接收到数据调用send函数发送数据 poll: poll的函数原型 参数介绍 fds:struct pollfd类型的数组里边存储了待检测的文件描述符的信息nfds:第一个参数数组中最后一个有效元素的下标1timeout指定poll函数的阻塞时长 -1一直阻塞直到检测的集合有就绪的文件描述符解除阻塞0不阻塞不论检测集合是否有就绪的文件描述符函数立刻返回 select与poll的区别 select一次检测需要两次拷贝效率低内核对select函数传递的待测集合的检测方式为线性效率高低取决于检测的文件描述符的个数select检测的最大文件描述符个数有上限 selec可以跨平台poll不能开平台。
http://www.yayakq.cn/news/4922/

相关文章:

  • 找效果图的网站哪个好网站建设单位有哪些方面
  • 网站怎么申请怎么注册网站的建设维护及管理制度
  • 怎么建设一个音乐网站广告投放形式有哪些
  • 中国建设银行app官方下载搜索引擎网站推广如何优化
  • 四川网站seo重庆蜡像制作
  • 网站发展趋势和前景wordpress js 判断登陆
  • 网站开发国内外研究动态做进口假体下巴的网站
  • php网站建设参考文献什么app可以制作价目表
  • 长春企业网站建设wordpress响应网页代码
  • 东莞网站SEO优化托管有没有专门做商铺招商的网站
  • php+mysql 2012也买酒商城网站源码做空的网站有哪些
  • 网站开发要用什么工具软件做公众号链接的网站
  • 湛江建设厅网站广州做网站做得比较好
  • 高级营销网站建设只需1200元网址英文
  • 可以自学网站开发个人求职网站设计
  • 沧州网站艰涩很广州白云住房和建设局网站
  • 乐昌门户网站中国十大设计院
  • 国家允许哪几个网站做顺风车郑州发布官网
  • 洛阳住房和城乡建设部网站建筑工程发布网站
  • 制作网站的步骤廊坊公司快速建站
  • 网站关键词如何快速上首页哈尔滨大型网站建设电话
  • 网站架构计划书网站收录代做
  • wordpress怎么删除预建网站服务器销售网站源码
  • 网站建设策划方案t怎么更换wordpress主题
  • 搬家公司怎么做网站免费商品列表网页模板源代码
  • 工程师报考网站wordpress删除分类
  • iis 网站模板下载seo关键词查询工具
  • 查看网站后台登陆地址医药做网站
  • 如何制作网站后台管理系统网站分页js
  • 织梦网站搭建高端酒店开发