I/O 模型

马谦马谦马谦 编程语言评论305字数 352阅读 1 分 10 秒阅读模式

一、 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模型-图片1

三、非阻塞式 I/O

非阻塞 I/O 的意思是:调用函数时如果没有数据可读,立马返回。然后开始轮询,直到有数据返回为止。

工作流程图:

I/O模型-图片2

四、多路 I/O 复用

多路 I/O 复用:通过多路 IO 复用模型 (select/poll/epoll) 同时监听多个套接字,等待某个套接字有数据到达时再执行系统调用。

工作流程图:

I/O模型-图片3

 
马谦马谦马谦
  • 本文由 马谦马谦马谦 发表于 2020 年 2 月 29 日 15:54:15
  • 转载请务必保留本文链接:https://www.dyxmq.cn/program/code/io-model-in-unix.html
给socket分配随机端口 C/C++

给 socket 分配随机端口

客户端的 socket 不需要手动执行 bind 绑定地址,但这不意味着客户端 socket 真的不需要绑定端口,实际上是内核它帮我们做了这个操作,在执行 connect 时,内核发现没有绑定端口,就会自动选择一个合...
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证