mysterin / question_and_answer

1 stars 0 forks source link

select, poll, epoll 区别 #107

Closed mysterin closed 5 years ago

mysterin commented 5 years ago

IO 多路复用

多个文件描述符 fd 的操作通过一个线程交替完成, 就是所谓的多路复用.

select

内核函数, 管理多个 fd 并轮询, 根据描述符状态处理. 缺点是每次调用都会复制 fd 集合从用户态到内核态, 遍历所有 fd, 开销大, 并且数量有限制.

poll

跟 select 差不多, 不过 fd 集合的方式不同.

epoll

解决上面的问题, linux 2.6 版本之后提出. 当 fd 就绪后会触发事件通知处理, 没有数量限制, 也不会每次都拷贝一次 fd 集合.