Closed mysterin closed 5 years ago
多个文件描述符 fd 的操作通过一个线程交替完成, 就是所谓的多路复用.
内核函数, 管理多个 fd 并轮询, 根据描述符状态处理. 缺点是每次调用都会复制 fd 集合从用户态到内核态, 遍历所有 fd, 开销大, 并且数量有限制.
跟 select 差不多, 不过 fd 集合的方式不同.
解决上面的问题, linux 2.6 版本之后提出. 当 fd 就绪后会触发事件通知处理, 没有数量限制, 也不会每次都拷贝一次 fd 集合.
IO 多路复用
多个文件描述符 fd 的操作通过一个线程交替完成, 就是所谓的多路复用.
select
内核函数, 管理多个 fd 并轮询, 根据描述符状态处理. 缺点是每次调用都会复制 fd 集合从用户态到内核态, 遍历所有 fd, 开销大, 并且数量有限制.
poll
跟 select 差不多, 不过 fd 集合的方式不同.
epoll
解决上面的问题, linux 2.6 版本之后提出. 当 fd 就绪后会触发事件通知处理, 没有数量限制, 也不会每次都拷贝一次 fd 集合.