首页 > 其他分享 >IO 模型

IO 模型

时间:2024-08-31 19:55:32浏览次数:13  
标签:异步 同步 模型 阻塞 五中 线程 IO

I/O基本概念

I/O即数据的读取(接收)或写入(发送)操作

通常用户进程中的一个完整I/O分为两个阶段

用户进程空间<-->内核空间

内核空间<-->设备空间(磁盘、网卡等)

分类:

内存I/O、网络I/O和磁盘I/O三种

同步和异步:

对于一个线程的请求调用来讲,同步和异步的区别在于是否要等这个请求出最终结果 对于多个线程而言,同步或异步就是线程间的步调是否要一致、是否要协调 同步也经常用在一个线程内先后两个函数的调用上 异步就是一个请求返回时一定不知道结果,还得通过其他机制来获知结果,如:主动轮询或被动通知

阻塞和非阻塞:

阻塞与非阻塞与等待消息通知时的状态(调用线程)有关 阻塞和同步是完全不同的概念。同步是对于消息的通知机制而言,阻塞是针对等待消息通知时的状态来说的 进程从创建、运行到结束总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态及死亡状态

线程在运行过程中,可能由于以下几种原因进入阻塞状态:

1.线程通过调用sleep方式进休眠状态

2.线程调用一个在I/O上被阻塞的操作,即该操作在输入/输出操作完成前不会返回到它的调用者

3.线程试图得到一个锁,而该锁正被其他线程持有,于是只能进入阻塞状态,等到获取了同步锁,才能恢复执行

4.线程在等待某个触发条件

五中I/O模型

一:阻塞I/O模型

二:非阻塞I/O模型

三:多路复用I/O模型

四:信号驱动式I/O模型

五:异步I/O模型

五中I/O模型比较

异步I/O相当于线程发起访问请求后,将等待数据和把数据从内核拷贝到用户空间的事情交给了别人去做。

目录

I/O基本概念

同步和异步:

阻塞和非阻塞:

五中I/O模型

五中I/O模型比较


标签:异步,同步,模型,阻塞,五中,线程,IO
From: https://blog.csdn.net/AQl97025656o/article/details/141757207

相关文章

  • spark的SparkSubmit类关于Configuration的资源文件加载
    在阅读 SparkSubmit 源代码时,重点关注 Configuration 的资源文件的加载情况,默认通过 newConfiguration() 构造方法创建时,只会加载 core-default.xml 和core-site.xml文件,但是 SparkSubmit 中打印 Configuration 时,发现还会加载 yarn-site.xml,SparkSubmit 代码中没有......
  • io重定向
    标准I/O流每个进程(包括命令)在运行时都有三个标准的I/O流:标准输入(StandardInput,stdin):默认从键盘获取输入。文件描述符为0标准输出(StandardOutput,stdout):默认输出到屏幕。文件描述符为1标准错误(StandardError,stderr):默认输出错误信息到屏幕。文件描述符为2索引对应文......
  • Goolge earth studio 进阶4——路径修改与平滑
    如果我们希望在大约中途时获得更多的城市鸟瞰视角。可以将相机拖动到这里并创建一个新的关键帧。camera_target_clip_7EarthStudio会自动平滑我们的路径,所以当我们通过这个关键帧时,不是一个生硬的角度,而是一个平滑的曲线。camera_target_clip_8路径上有贝塞尔控制......
  • AI跟踪报道第54期-新加坡内哥谈技术-本周AI新闻: OpenAI最新模型揭晓和全AI生成的游戏
      每周跟踪AI热点新闻动向和震撼发展想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行!订阅:https://......
  • MotionPlus 安装指南
    介绍MotionPlus是一款用于监控摄像头的视频信号,并检测运动的应用程序,是对原有Motion软件的升级版本。它支持多种设备,如网络摄像头、V4L2网络摄像头和视频采集卡等。MotionPlus提供多种功能,包括录制视频、保存图片、实时视频流观看、调用脚本、日志记录、以及运动检测等功能。安......
  • IO流:缓冲流
    字节缓冲流简介缓冲流是对原原始流进行包装,提高原始流读写数据的性能。提供8KB输入输出缓冲区。 用法publicclassBufferedInputStreamTest1{publicstaticvoidmain(String[]args){try{//1.定义一个字节缓冲输入流包裹原始的字节输入流......
  • Clion 使用
    1.使用CLion进行ROS开发安装基本的ROS环境ROS环境的安装请参考安装ROS。安装CLion下载CLionLinux的下载地址如下:CLion解压CLion将下载的CLion复制到/opt目录下(你可以解压到适合自己的文件夹,只要保证后续使用的路径一致即可),然后在这个目录下使用终端将其解压,命令如......
  • 轻松上手大模型应用开发——Git教程「亲自动手实践大型模型微调」,简化学习流程!
    LLM正逐步成为信息世界的新革命力量,其通过强大的自然语言理解、自然语言生成能力,为开发者提供了新的、更强大的应用开发选择。随着国内外井喷式的LLMAPI服务开放,如何基于LLMAPI快速、便捷地开发具备更强能力、集成LLM的应用,开始成为开发者的一项重要技能。目前,关......
  • spark的SparkSubmit类关于Configuration的资源文件加载
    在阅读 SparkSubmit 源代码时,重点关注 Configuration 的资源文件的加载情况,默认通过 newConfiguration() 构造方法创建时,只会加载 core-default.xml 和core-site.xml文件,但是 SparkSubmit 中打印 Configuration 时,发现还会加载 yarn-site.xml,SparkSubmit 代码中没......
  • 2024年8月31日 Python - asycnio
    参考asyncio---异步I/O—Python3.12.4文档asyncio视频教程-bilibili6.2.9. yield表达式—Python3.12.4文档PEP380:委托给子生成器的语法yield介绍yieldx生成一个内容yieldfrom委托给子生成器,yieldfromiterable本质上只是foritemini......