多路IO转接服务器,不再由应用程序自己监视客户端,连接,取而代之,由内核替应用程序监视文件。
与多进程和多线程技术相比,IO多路复用技术的最大优势是系统开销小,系统不必创建进程和线程,大大减小了系统的开销。
select
跨平台的系统API可以在windows、linux、unix平台下运行
主要缺点:
- 文件描述符上限固定为1024
- 监听和返回集合是同一个参数
- 每次查找满足要求的文件描述符需要遍历1024次
poll
对select的适当改进,在linux,unix平台下常用
- 可以通过修改配置文件的方式修改文件描述符监听上限
- 监听和返回集合分离
- 搜索范围变小
epoll
只在linux系统下,是对select和poll函数的改进
- 文件描述符上限改变
- 返回集合独立
- 边沿触发,使得用户空间程序有可能缓存IO状态,减少epoll_wait和epoll_pwait的调用,提高应用程序效率。
五种网络IO模型
- 同步阻塞IO(点餐后一直等)
- 同步非阻塞IO(点餐后逛街,然后来回询问)
- IO多路复用
- 信号驱动IO
- 异步IO