一、 I/O 模型分类
unix 环境下有 5 中 IO 模型:
- 阻塞式 I/O
- 非阻塞式 I/O
- I/O 多路复用
- 信号驱动 I/O
- 异步 I/O(POSIX 中的 aio_系列函数)
常用的是前三种方式,特别是多路 I/O 复用是目前使用最广泛的 I/O 模型。它不仅包含了阻塞和非阻塞,同时也包含了异步调用。非阻塞+异步是效率最高的 I/O 方式。
二、阻塞式 I/O
阻塞 I/O 的意思是:调用读写函数时,系统会卡在当前函数,直到有数据可读或者可写才返回。
工作流程图:
三、非阻塞式 I/O
非阻塞 I/O 的意思是:调用函数时如果没有数据可读,立马返回。然后开始轮询,直到有数据返回为止。
工作流程图:
四、多路 I/O 复用
多路 I/O 复用:通过多路 IO 复用模型 (select/poll/epoll) 同时监听多个套接字,等待某个套接字有数据到达时再执行系统调用。
工作流程图:
评论