Redis中BIO、NIO、IO多路复用

news2024/11/26 18:45:13

在这里插入图片描述

1 BIO(阻塞IO)

阻塞IO就是两个阶段都必须阻塞等待

在这里插入图片描述

通常IO操作都是阻塞I/O的,也就是说当你调用read时,如果没有数据收到,那么线程或者进程就会被挂起,直到收到数据。

read直到数据复制到应用进程的缓冲区或者发生错误才会返回,这就是阻塞的定义:等待某个事件

2 NIO(非阻塞IO)

非阻塞IO的recvfrom操作会理解返回结果而不是阻塞用户进程,

在这里插入图片描述
好处:如果等待的事件没有发生,如上图中所示的read数据未准备好,系统调用会立即返回而不是导致调用进程被挂起。

坏处:盲轮询(盲等)并没有提升性能,用户进程需要采用轮询的方式(逐个查找)查看事件状态,这往往耗费大量的CPU资源。

3 IO多路复用

无论是阻塞IO还是非阻塞IO,用户应用在一阶段都需要调用recvfrom来获取数据,差别在于无数据时的处理方案:

  • 如果调用recvfrom时,恰好没有数据,阻塞IO会使进程阻塞,非阻塞IO使CPU空转,都不能充分发挥CPU的作用
  • 如果调用recvfrom时,恰好数据,用户进程可以直接进入第二阶段,读取并处理数据

比如服务端处理客户端Socket请求时,在单线程情况下,只能依次处理每一个socket,如果正在处理的socket恰好未就绪(数据读取不可读或不可写),线程就会被阻塞,所有其他客户端socket都必须等待,性能自然会很差

文件描述符:简称FD,是一个从 0 开始递增的无符号整数,用来关联Linux中的一个文件。在Linux中,一切皆文件,例如常规文件、视频、硬件设备等,当然也包括网络套接字(Socket)

IO多路复用:是利用单个线程来同时监听多个FD,并在某个FD可读、可写时得到通知,从而避免无效的等待,充分利用CPU资源

在这里插入图片描述

recvfrom只能监听一个FD
select可以监听多个FD

不通过监听FD的方式、通知的方式又有多种实现,常见的有

  • select
  • poll
  • epoll

区别:

  • select和poll只会通知用户进程有FD就绪,但不确定具体是哪个FD就绪,但不确定具体是哪个FD,需要用户进程逐个遍历FD来确认
  • epoll则会在通知用户进程FD就绪的同时,把已就绪的FD写入用户空间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/88848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构与算法】第十六篇:图论(基础篇)

知识导航图形结构的引进图(Grapth)1.图的概念与应用2.有向图入度,出度3.无向图4.完全图无向完全图有向完全图5.连通图6.连通分量强连通分量图的实现方案1.邻接矩阵实现法2.邻接表实现法3.两种方法对比分析图形结构的引进 🌎 数据…

Linux基础-目录操作

该文章主要为完成实训任务及总结,详细实现过程及结果见【参考文章】 参考文章:https://howard2005.blog.csdn.net/article/details/126962205 文章目录一、常用权限操作1.1 常用权限操作1. chgrp命令2. chown命令3. chmod命令1.2 权限操作实战任务1 创建…

14、Redis_主从复制

文章目录14、Redis_主从复制14.1 是什么14.2. 能干嘛14.3 怎么玩:主从复制14.3.1 新建redis6379.conf,填写以下内容14.3.2 新建redis6380.conf,填写以下内容14.3.3 新建redis6381.conf,填写以下内容14.3.4 启动三台redis服务器14.…

java项目_第173期ssm高校二手交易平台_计算机毕业设计

java项目_第173期ssm高校二手交易平台_计算机毕业设计 【源码请到下载专栏下载】 今天分享的项目是《ssm高校二手交易平台》 该项目分为2个角色,管理员和用户。 用户可以浏览前台商品,并且进行购买商品,并在 个人后台查看自己的订单、查看商品…

DPDK源码分析之DPDK技术简介

Cache和内存技术 1. Cache一致性 多核处理器同时访问同一段cacheline时,会出现写回冲突的情况,操作系统解决这个问题会消耗一部分性能,DPDK采用了两个技术来解决这个问题: 对于共享的数据,每个核都定义自己的备份lc…

区块链学习2-合约开发

概述 智能合约本质上是运行在某种环境(例如虚拟机)中的一段代码逻辑。 长安链的智能合约是运行在长安链上的一组“动态代码”,类似于Fabric的chaincode,Fabric的智能合约称为链码(chaincode),…

对氯间二甲苯酚在活性污泥发酵过程中重塑ARGs的机制类别

2022年8月,凌恩生物客户河海大学罗景阳教授团队在《Science of the Total Environment》期刊上发表研究论文“Para-chloro-meta-xylenol reshaped the fates of antibiotic resistance genes during sludge fermentation: Insights of cell membrane permeability, …

ChatGPT技术解构

ChatGPT的训练主要分为三个步骤,如图所示: Step1: 使用有监督学习方式,基于GPT3.5微调训练一个初始模型;训练数据约为2w~3w量级(根据InstructGPT的训练数据量级估算,参照https://arxiv.org/pdf…

【内网安全-防火墙】防火墙、协议、策略

目录 一、基础知识 1、防火墙五个域 2、协议模型 二、出入站策略 1、单个机器防火墙 2、域控的防火墙 3、安全策略 一、基础知识 1、防火墙五个域 1、Untrust(不信任域,低级安全区域): 用来定义Internet等不安全的网络,用于网络入口线的接入 ——…

沁恒 CH32V003J4M6 开发测试

一、概述 具体看图,SOP8价格在0.6R,TSSOP20价格在0.7R,优势太大了 二、开发准备 通过原厂可以拿到样片,目前我拿到这颗是SOP8,另外官方淘宝可以买到TSSOP20的测试板,也带样片购买WCHLINK,TB…

Mysql 进阶(面向面试篇)锁

全局锁、表级锁(表锁、元数据锁、意向锁(意向共享锁、意向排它锁))、行级锁(行锁(共享锁、排它锁)、间隙锁、临键锁) 表级锁(表锁(表锁分为:表共…

仅差一步!如何缩短加入购物车与成单的距离?

不知不觉,2022年已接近尾声,经历了卡塔尔世界杯、黑色星期五等跨境电商狂欢节后,不少跨境电商卖家都在开展复盘行动,为接下来的圣诞节运营计划打下扎实基础。时常关注跨境电商行业的人都知道,衡量跨境电商广告效率的关…

Python函数、类和对象、流程控制语句if-else while的讲解及演示(图文解释 附源码)

一、函数 函数是完成某个功能的代码段,可被其他代码调用,调用的代码可以将数据传递给函数,函数可将对数据的处理结果返回给调用代码。 def mysubt( a, b 0 ): # 定义一个自己的减法函数,第二个参数为默认值为0的默认参数c a -…

2023年湖北报考施工员要多少钱?甘建二告诉您

2023年湖北报考施工员要多少钱?甘建二告诉您 2023年湖北报考施工员要多少钱,甘建二告诉您 2023年武汉报考施工员要多少钱,甘建二告诉您 2023年黄冈报考施工员要多少钱,甘建二告诉您 2023年黄石报考施工员要多少钱,甘…

HBase Java API 开发:批量操作 第3关:批量导入数据至HBase

每一次只添加一个数据显然不像是大数据开发,在开发项目的时候也肯定会涉及到大量的数据操作。 使用Java进行批量数据操作,其实就是循环的在Put对象中添加数据最后在通过Table对象提交。 如何进行批量操作呢,讲到批量操作,相信大…

秋招必备!阿里产出的高并发+JVM豪华套餐送给你,绝对硬核干货

**3、设计了方案,但细节掌握不透彻:**讲不出方案要关注的技术点和可能带来的消极影响。比如读性能有瓶颈会引入缓存,但是忽视了缓存命中率、数据一致性、热点key等问题。 面对马上就要到来的双十一的秒杀环节,你是否已经有备无患…

[附源码]Node.js计算机毕业设计高校第二课堂管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

数据结构为何重要(《数据结构与算法图解》by 杰伊•温格罗)

本文内容借鉴一本我非常喜欢的书——《数据结构与算法图解》。学习之余,我决定把这本书精彩的部分摘录出来与大家分享。 基础数据结构:数组 数组是计算机科学中最基本的数据结构之一。如果你用过数组,那么应该知道它就是一个含有 数据的列表…

免费U盘文件恢复,你不知道的10款u盘恢复软件

U盘是我们在工作和生活中经常使用的移动存储设备。在操作U盘时,里面重要的文件可能会因为疏忽而被删除。通过电脑回收站、备份等方法都不能恢复U盘里面的数据,我们该怎么办?其实U盘删除的文件在删除后不会被完全删除,通过u盘恢复软…

以太网 STP、RSTP、MSTP基础配置、STP生成树安全保障操作命令介绍

2.13.0 以太网 STP、RSTP、MSTP配置、生成树安全保障操作 主要参考:华为S2750, S5700, S6700 V200R005(C00&C01&C02&C03) 产品文档 《命令手册》 MSTP快速生成树STP配置RSTP配置MSTP配置生成树的安全保障操作(1)根桥保护&#xf…