首页 > 其他分享 >阻塞IO、非阻塞IO、IO多路复用和信号驱动IO简介(简单易懂、纯小白)

阻塞IO、非阻塞IO、IO多路复用和信号驱动IO简介(简单易懂、纯小白)

时间:2024-06-14 20:57:44浏览次数:23  
标签:22% 阻塞 3A% CSDN IO 纯小白 2C%

一、分类

在UNIX或Liunx下主要有4中IO模型

阻塞IO:最简单、最常用、效率最低

阻塞IO简介和代码示例-CSDN博客当进程执行读操作的时候,如果缓冲区有内容,则继续读取内容向下执行。缓冲区没内容,进程进入休眠态,直到缓冲区中再次有内容,由内核唤醒进程,读取缓冲区的内容,然后继续向下执行。:如果管道写满了,进程阻塞,等待有足够的空间容纳本次的写操作了,写操作继续执行,但大多数情况下,我们只关心读阻塞的问题。缺省情况下,套接字建立后的模式就是阻塞I/O模式。IO模型,大部分程序使用的都为阻塞IO模型。https://blog.csdn.net/CSDN_DU666666/article/details/139598764?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22139598764%22%2C%22source%22%3A%22CSDN_DU666666%22%7D

非阻塞IO:可防止进程阻塞在IO操作上,需要轮询

非阻塞IO简介和代码实例-CSDN博客recv和recvfrom的MSG_DONTWAIT O_NONBLOCK。以读操作为例,当进程执行读操作的时候,如果缓冲区内有内容,则读取内容继续执行。但对于大部分的函数并没有非阻塞标志位,可以使用fcntl函数设置非阻塞标志位。如果缓冲区没有内容,则立即返回一个错误,而非让进程进入休眠状态。eg: waitpid的WHOHANG。有些函数本身自带非阻塞标志位。https://blog.csdn.net/CSDN_DU666666/article/details/139637764?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22139637764%22%2C%22source%22%3A%22CSDN_DU666666%22%7D

IO多路复用:允许同时对多个IO进行控制

IO多路复用简介和代码实例(select函数)-CSDN博客IO多路复用简介和代码实例(select函数)https://blog.csdn.net/CSDN_DU666666/article/details/139663884?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22139663884%22%2C%22source%22%3A%22CSDN_DU666666%22%7D

信号驱动IO:一种异步通信模型

标签:22%,阻塞,3A%,CSDN,IO,纯小白,2C%
From: https://blog.csdn.net/CSDN_DU666666/article/details/139598410

相关文章

  • 【Stable Diffusion】最新SD换脸插件ReActor,视频换脸全流程!流畅丝滑!【附插件及安装报
    今天,我给大家分享一个使用“ReActor”插件来进行视频换脸的案例。视频换脸的思路其实也很简单,其实就是把视频的每一帧都提取出来,然后把每一帧的图片都进行换脸,最后重新把这些图片重新合成一个视频。废话不多说,我们先来看看效果:生成效果原视频如下:杨幂:最后的效果:......
  • (更新自2024年6月)Flutter3中BottomNavigationBar的用法。
    import'package:flutter/material.dart';voidmain(){runApp(MyApp());}classMyAppextendsStatelessWidget{@overrideWidgetbuild(BuildContextcontext){returnconstMaterialApp(home:MyHomePage(),);}}classMyH......
  • 【Python&RS】基于Rasterio库裁剪栅格数据&压缩栅格影像
        之前分享过【Python&RS】Rasterio库安装+基础函数使用教程,大家有兴趣的可以去看看。由于最近有涉及到栅格裁剪和压缩的问题,所以研究了一下今天和大家分享分享。原创作者:RS迷途小书童博客地址:https://blog.csdn.net/m0_56729804?type=blog1需要的库import......
  • 核心(Hutool-core)IO流相关(IO工具类-IoUtil)
    方法拷贝流的读写可以总结为从输入流读取,从输出流写出,这个过程我们定义为拷贝。这是一个基本过程,也是文件、流操作的基础。以文件流拷贝为例:BufferedInputStreamin=FileUtil.getInputStream("d:/test.txt");BufferedOutputStreamout=FileUtil.getOutputStream("d:/test......
  • 核心(Hutool-core)IO流相关
    由来IO的操作包括读和写,应用场景包括网络操作和文件操作。IO操作在Java中是一个较为复杂的过程,我们在面对不同的场景时,要选择不同的InputStream和OutputStream实现来完成这些操作。而如果想读写字符流,还需要Reader和Writer的各种实现类。这些繁杂的实现类,一方面给我们提供了更多......
  • BEV感知算法---BevFusion
    前言转载自https://blog.csdn.net/qq_40672115/article/details/134891133这是一篇LiDAR和Camera融合的BEV感知算法,从算法动机&开创性思路、主体结构、损失函数以及性能对比四个方面展开。BEVFusion有两篇文章,本次课程主要讲解的是阿里和北大的:https://arxiv.org/pdf/2205.1......
  • 实用软件下载:Studio One最新安装包及详细安装教程
    StudioOne6是一款功能丰富、专业级的音乐制作软件,它具备灵活的工作流程和高效的团队协作能力,能帮助用户实现高质量的音乐创作和制作。智能模板更快的启动,全新的智能模板为你手头的任务提供了必要的工具集,包括基本录制、混音词干、母带制作专辑和设置现场表演等,一键播放乐器......
  • 04《android studio开发实战(第三版)》第七到十章阅读笔记
    第七章:持久化存储本章介绍了SharedPreferences的使用方法,它是一种轻量级的存储方案,用于保存简单的键值对数据,如用户设置和配置。 学习了如何创建SharedPreferences对象,使用getSharedPreferences()方法读取和写入数据,以及如何使用apply()和commit()提交修改。了解了如何在Andro......
  • Java IO流(二进制IO流、文本IO流)
    JavaIO流(Input/OutputStream)是Java中用于处理输入输出操作的一种机制。IO流可以从不同的数据源读取数据,或者将数据写入到不同的目标。根据处理的数据类型,IO流可以分为二进制IO流和文本IO流。一、二进制IO流: 二进制IO流主要用于处理非文本数据,如图片、音频、视频等。在J......
  • 【Python&RS】基于Rasterio库裁剪栅格数据&压缩栅格影像
    ​     之前分享过【Python&RS】Rasterio库安装+基础函数使用教程,大家有兴趣的可以去看看。由于最近有涉及到栅格裁剪和压缩的问题,所以研究了一下今天和大家分享分享。原创作者:RS迷途小书童博客地址:https://blog.csdn.net/m0_56729804?type=blog1需要的库imp......