131-网络编程: I/O多路复用(I/O多路转接)

1. I/O多路复用(I/O多路转接)

  • I/O 多路复用使得程序能同时监听多个文件描述符,能够提高程序的性能,Linux 下实现 I/O 多路复用的
  • 系统调用主要有 selectpollepoll

输入: 将程序写到内存中

输出: 将内存中的数据读到文件中

socket通信时,其本身是一个文件描述符,对应内核中的一块缓冲区(里面有读缓冲区和写缓冲区),通过缓冲区进行数据的交换。

要操作IO,其实就是看文件描述符的读写缓冲区中是否有数据;

1.1 IO模型

1.1.1、阻塞等待

TCP在进行通信时,没有数据,read就会一直阻塞等待;

进程调度是非常消耗资源的,线程要稍微好点。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gLRxQDNm-1651469955248)(../../../assets/IO多路复用/image-20220123200158093.png)]

1.1.2、非阻塞、忙轮询

将read设置为非阻塞,有数据会读,没数据即返回一个值,程序继续向下执行,但是我们需要不断的检测有没有数据到达;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0y7Aigmd-1651469955250)(../../../assets/IO多路复用/image-20220123200816136.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hRYAZ0Z9-1651469955250)(../../../assets/IO多路复用/image-20220123201013511.png)]

1.1.3、IO多路转接技术-select/poll技术

就是将所有的文件描述符都交给内核,由内核统一给我们检测,内核检测后,再将数据返回给我们。

1.1.4、IO多路转接技术-epoll技术

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CYMmXj8q-1651469955251)(../../../assets/IO多路复用/image-20220123202457307.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liufeng2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值