IO多路复用实现方式

news/2024/10/31 1:26:31/

IO分类

  1. NIO
  • NIO即同步非阻塞IO。非阻塞的recvfrom系统调用之后,进程并没有被阻塞,内核马上返回进程,如果数据还没准备好,此时会返回一个error。进程在返回之后,可以干点别的事情,然后再发起recvfrom系统调用。重复上面的过程,循环往复的进行recvform系统调用。这个过程通常被称之为轮询。轮询检查内核数据,直到数据准备好,再拷贝数据到进程,进行数据处理。需要注意,拷贝数据整个过程,进程仍然是属于阻塞的状态。
  • 发起recvfrom系统调用后立即返回,之后通过轮询的方法查看数据是否准备就绪;
  • 数据准备好后将数据从内核复制到用户进程,阻塞。
  1. BIO
  • BIO即同步阻塞IO。
  • 发起recvfrom系统调用,等待数据到达,阻塞;
  • 数据准备好将数据从内核复制到用户进程,阻塞。
  1. Signal Driven IO
  • 信号驱动IO。
  1. Asynchronous IO
  • 异步非阻塞IO。

IO多路复用技术

  1. select
  • select会修改传入的参数数组,这个对于一个需要调用很多次的函数,是非常不友好的;
  • 任何一个socket准备好数据后都需要遍历一次链表,随着监视的描述符数量的增加,其效率会线性下降;
  • 非线程安全,socket加入到select后无法收回,若强行关闭则会出现不可预测的后果;
  1. poll
  • 无最大连接数的限制,从设计上来说,不再修改传入数组;
  • 非线程安全,任何一个socket准备好数据后都需要遍历一次链表,随着监视的描述符数量的增加,其效率也会线性下降。
  1. epoll
  • 仅支持linux;
  • 涉及epoll_create、epoll_ctl、epoll_wait;
  • 工作模式有水平触发和边缘触发。

Gitee企业版专属

Gitee企业版


http://www.ppmy.cn/news/6043.html

相关文章

硬盘 / 硬盘控制器主要端口寄存器 / Controller Register

文章目录IDE 与 SATA硬盘分区表结构硬盘控制器主要端口寄存器data 寄存器Error && FeaturesErrorFeaturesSector countLBA low | mid | highdevice 寄存器StatusCommandIDE 与 SATA 很久以前,硬盘控制器和硬盘是分开的,后面开发了一个新接口&am…

【小程序】案例 - 本地生活(首页)

1. 首页效果以及实现步骤 新建项目并梳理项目结构 配置导航栏效果 配置 tabBar 效果 实现轮播图效果 实现九宫格效果 实现图片布局 2. 接口地址 获取轮播图数据列表的接口 【GET】 https://www.escook.cn/slides 获取九宫格数据列表的接口 【GET】 https://www.esco…

C++内存管理

内存管理 c:malloc、calloc、realloc、free c:new(不会初始化)、delete 内存管理方式 对于内置类型 //申请和释放单个元素的空间,使用new和delete操作符 int* p1 new int;//申请1个int类型的空间 delete p1;int*…

jenkins pipeline 指定执行节点

第一种写法: pipeline { agent { label “slave-hw” } stages { stage(‘执行更新程序包’) { steps { sh ‘cd /apps/nedy/nedy/csctbb/HWCLOUD ; sh test.sh’ } } stage(‘是否继续’) { steps { input message: ‘确认继续吗?’, ok: ‘确认’ } } …

【PAT甲级 - C++题解】1113 Integer Set Partition

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:PAT题解集合 📝原题地址:题目详情 - 1113 Integer Set Partition (pintia.cn) 🔑中文翻译:整数集合划分 &…

四、网络层(七)网络层设备

目录 7.1 路由器的组成和功能 7.2 路由表与路由转发 7.1 路由器的组成和功能 路由器是一种具有多个输入/输出端口的专用计算机,其任务是连接不同的网络(可以是异构的)并完成路由转发。在多个逻辑网络(即多个广播域&#xff…

高新技术企业认定的指标要求

高新技术企业认定的指标要求 1、拥有核心自主知识产权 (通过自主研发,受让等方式)拥有主营产品核心技术知识产权,数量要求:2项发明专利;10项实用新型专利软件著作版权。 2、产品(服务&#x…

深度学习训练营之海贼王人物识别

深度学习训练营之海贼王人物识别原文链接环境介绍前置工作设置GPU导入数据数据查看数据预处理加载数据可视化数据检查数据配置数据集prefetch()功能详细介绍:归一化查看归一化后的数据构建VGG-16网络网络结构编译模型训练结果可视化原文链接 🍨 本文为&a…