首页 > 系统服务 > 详细

linux i/o multiplexing

时间:2017-05-18 21:07:13      阅读:207      评论:0      收藏:0      [点我收藏+]

socket也是io的一种,阻塞的socket操作包括:

  • 输入:recv(), recvfrom(),缓冲区为空时阻塞
  • 输出:send(), sendto(),缓冲区为空时阻塞
  • 接受:accept(),无连接时阻塞
  • 连接:connect(),无响应时阻塞,对TCP连接而言会阻塞一个服务器往返时间

解决方案比较:

  select poll epoll
操作方法 遍历 遍历 回调
底层实现 数组 链表 哈希表
效率 O(n) O(n) O(1)
最大连接数 1024(x86), 2048(x64) 无限制 无限制
fd拷贝 每次调用都需要将fd集合从用户态拷贝到内核态 每次调用都需要将fd集合从用户态拷贝到内核态 调用epoll_ctl时拷贝进内存,之后每次epoll_wait不再拷贝

 

 

 

    

linux i/o multiplexing

原文:http://www.cnblogs.com/autoria/p/6875583.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!