免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 867 | 回复: 0
打印 上一主题 下一主题

poll与select [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-30 09:05 |只看该作者 |倒序浏览

               
               
               
  • 用于需要向多个描述符读写的情况. 使用多进程或多线程的话需要同步, 比较复杂; 使用异步I/O的话每个系统实现不同且都有限制; 比较时宜的方法是采用多路I/O.
  • 多路I/O的功能. 用户建立一个描述符列表, 并调用一个多路I/O函数, 该函数直到列表中的描述符至少有一个可以进行I/O操作时才返回, 并且告知用户可用的描述符.
  • poll_table_struct结构的作用: kernel应该管理一个总的poll_table_struct, 当应用程序调用poll或select等待某个描述符I/O时, 由该描述符所涉及的设备驱动(该驱动必须实现poll操作)将描述符及相应的读/写等待队列(可能是设备的等待队列,也可能是文件的等待队列)wait_queue_head_t传给poll_wait函数, 而由poll_wait函数将这两者加入poll_table_struct, 并将当前进程加入相应等待队列; 当硬件或另外的进程唤醒设备(文件)的读/写等待队列时, 系统就从poll_wait返回, 从wait_queue_head中删去当前进程, 并从poll_table_struct中删去本设备(文件)的wait_queue_head和描述符.
  • epoll系统调用是为了提高等待过多(上千个)描述符时, 创建poll_table_struct结构的效率而设置的.
                   
                   
                   
                   
                   
                   
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/12072/showart_120106.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP