IO的多路复用

一、概念:

        使单线程或者单进程同时监测若干个文件描述符具有执行的能力;

二、作用:

        类似于多进程和多线程

三、必要性:

        多线程或者多进程对资源需求较高

四、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;②支持水平触发和边沿触发。
 

        

你可能感兴趣的:(服务器,运维)