IO的多路复用

发布时间:2023年12月24日

一、概念:

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

二、作用:

? ? ? ? 类似于多进程和多线程

三、必要性:

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

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

? ? ? ??

文章来源:https://blog.csdn.net/m0_74131325/article/details/135182847
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。