一、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)同时监听多个套接字,等待某个套接字有数据到达时再执行系统调用。
工作流程图:
评论