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

工作流程图:

最后修改:2020 年 02 月 29 日
喜欢就给我点赞吧