首页 > 数据库 >redis自学(13)阻塞IO与非阻塞IO

redis自学(13)阻塞IO与非阻塞IO

时间:2024-03-08 17:47:32浏览次数:28  
标签:13 数据 阻塞 阻塞状态 内核 IO 等待

阻塞IO

顾名思义,阻塞IO就是两个阶段都必须阻塞等待:

 

 

调用revfrom函数的时候,内核没有数据,有两种处理结果,一个是返回失败的信息,一个是等待,而阻塞IO的选择是等待。

可以看到,阻塞IO模型中,用户进程在两个阶段都是阻塞状态。

非阻塞IO

顾名思义,非阻塞IO的recvfrom操作会立即返回结果而不是阻塞用户进程。

 

 

与阻塞IO不同的是,内核没有数据它不等待,而是返回失败,过一会儿再访问数据,这样往复循环,这期间内核还是会去硬件获取数据,终归有一次recvfrom内核会有数据,而用户应用在等待数据的阶段是非阻塞状态,但是在数据拷贝的阶段,非阻塞IO在此期间依然是阻塞状态。

非阻塞IO与阻塞IO相比,并没有什么提升,虽然在等待数据阶段是没有阻塞,但是一直盲目的轮询之外没做任何其他的事,反而因为不停地调用命令,使CPU的使用率暴增。所以并没有提升整个进程的性能,甚至可能还不如阻塞IO(指的是当前这个非阻塞IO的应用,如何用好,看IO多路复用)。

标签:13,数据,阻塞,阻塞状态,内核,IO,等待
From: https://www.cnblogs.com/bulesea/p/18061510

相关文章

  • LLM 加速技巧:Muti Query Attention
    前言 MQA是19年提出的一种新的Attention机制,其能够在保证模型效果的同时加快decoder生成token的速度。在大语言模型时代被广泛使用,很多LLM都采用了MQA,如Falcon、PaLM、StarCoder等。本文转载自DeephubImba作者:FlorianJune仅用于学术分享,若侵权请联系删除欢迎关注......
  • macOS Ventura 13.6.5 (22G621) 正式版发布,ISO、IPSW、PKG 下载 (安全更新)
    macOSVentura13.6.5(22G621)正式版发布,ISO、IPSW、PKG下载(安全更新)3月8日凌晨,macOSSonoma14.4发布,同时带来了macOSVentru13.6.5和macOSMonterey12.7.4安全更新。macOSVentura13.6及更新版本,如无特殊说明皆为安全更新,不再赘述。请访问原文链接:https://......
  • macOS Ventura 13.6.5 (22G621) Boot ISO 原版可引导镜像下载
    macOSVentura13.6.5(22G621)BootISO原版可引导镜像下载3月8日凌晨,macOSSonoma14.4发布,同时带来了macOSVentru13.6.5和macOSMonterey12.7.4安全更新。macOSVentura13.6及更新版本,如无特殊说明皆为安全更新,不再赘述。本站下载的macOS软件包,既可以拖拽到......
  • fink泛型参数问题和TypeHint TypeInformation Types区别
    TypeHint,TypeInformation,Types区别TypeInformation是flink的类型定义,TypeHint是描述用于描述泛型参数的辅助类,Types是一个封装了常用TypeInformation的工具类描述问题下面一段代码的有两个参数,第一个来自数据流元素,他的本质是入参。第二个是出参,效果和返回值类似第一个参......
  • mongodb6.0.13 搭建复制集PSA
    一、材料mongodb:6.0.13mongosh:2.1.5  openssl-1.1.1w系统:redhat4.8二、模式PDA:一个主节点(Primary)、  一个延迟副节点(SEcondary)、一个仲裁节点(arbiter)PDA主节点延迟副节点仲裁节点名称PrimarySecondaryArbiter端口27017......
  • python 操作 minio
    环境安装pipinstall-Uminio示例代码importosfromminioimportMiniofromloguruimportloggerfromdatetimeimporttimedeltaclassClient:'''endpoint:ip:portaccess_key:yourusernamesecret_key:yourpasswordsecur......
  • Neo4j Exfiltrate data ,Injection
    InjectionsHowtoinjectInjectablequeryInjectionMacth(o)whereo.Id='{input}''OR1=1with0as_l00{...}RETURN1//MATCH(o)wehre'{input}'=o.Id'='{...}with0as_......
  • windows 安装 minio
    1.打开官网链接https://www.minio.org.cn/2.点击下载3.点击windows,然后点击MINIOSERVER右侧的DOWNLOAD进行下载4.找到环境变量,新建系统变量,设置MINIO的用户名和密码5.启动MINIOSERVERminio.exeserverD:/data#server后面的路径需绝对路径6.可以......
  • Istio中的核心资源及定义
    Istio的核心资源主要包括以下几种:1.Gateway用于建模边缘网关,可以为进入或离开网格的流量提供专用的入口和出口点。Gateway定义了在网格边缘运行的负载均衡器,用于接收传入或传出的HTTP/TCP连接。然后,它将接收到的连接路由到目标地址,该地址可以是网格内的服务,也可以是网格......
  • aiofiles,一个异步测试的 Python 库!
    什么是aiofiles库?aiofiles是一个异步文件操作库,提供了一种简单而强大的方式来执行文件操作,包括打开文件、读取文件、写入文件等。aiofiles库是建立在asyncio之上的,它允许开发人员在异步程序中执行文件操作,而不会阻塞事件循环。安装aiofiles库pipinstallaiofiles基本......