一、概念:
? ? ? ? 使单线程或者单进程同时监测若干个文件描述符具有执行的能力;
二、作用:
? ? ? ? 类似于多进程和多线程
三、必要性:
? ? ? ? 多线程或者多进程对资源需求较高
四、IO模型:
? ? ? ? 1.阻塞io
? ? ? ? ? ? ? ? 不设置的话系统默认
? ? ? ? 2.非阻塞io
? ? ? ? ? ? ? ? 在阻塞io的基础上调整为不在阻塞状态
? ? ? ? ? ? ? ? 用到的函数接口:fcntl
? ? ? ? 3.信号驱动io
? ? ? ? 4.并行模型 进程 ,线程
? ? ? ? 5.io的多路复用
五、函数接口
? ? ? ? 1.select:完成指定描述符集合中有效描述符的动态监测
? ? ? ? ? ? ? ? 该函数具有阻塞功能
? ? ? ? 2.epoll:功能和select大致相同
? ? ? ??epoll 解决了select和poll的几个性能上的缺陷:①不限制监听的描述符个数(poll也是),只受进程打开描述符总数的限制;②监听性能不随着监听描述 符数的增加而增加,是O(1)的,不再是轮询描述符来探测事件,而是由描述符主动上报事件;③使用共享内存的方式,不在用户和内核之间反复传递监听的描述 符信息;④返回参数中就是触发事件的列表,不用再遍历输入事件表查询各个事件是否被触发。
epoll显著提高性能的前提是:监听大量描述符,并且每次触发事件的描述符文件非常少。
epoll的另外区别是:①epoll创建了描述符,记得close;②支持水平触发和边沿触发。
?
? ? ? ??