儿子该如何找老子要钱------浅聊linux中的5种I/O模型并顺便说说异步和非阻塞的区别

本文主要是介绍儿子该如何找老子要钱------浅聊linux中的5种I/O模型并顺便说说异步和非阻塞的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        某儿子在上大学, 经济还不能独立, 经常向老子要钱。 有的时候, 儿子没有直接向老子要钱, 而是先嗅探式地问问老子是否有钱, 然后再伺机开口要, 也是蛮聪明的哈。

 

        我们来看看, 儿子要钱的几种方式:

        1.  如图:同步, 阻塞地要钱

             儿子 = 用户进程

             老子 = linux内核

             要钱 =  recv

 

 

        2. 如图:同步, 非阻塞地要钱

 

             儿子 = 用户进程

             老子 = linux内核

             要钱 =  recv

             妈的,还在准备 = EWouldBlock

       

 

        3. 如图:同步, 刺探性地要钱

 

             儿子 = 用户进程

             老子 = linux内核

             有钱吗?= select

             要钱 =  recv

       

        4.  用得不多, 本文先不说。

 

        5. 如图: 异步要钱

 

             儿子 = 用户进程

             老子 = linux内核

             要钱 = aio_read

             通知儿子拿到钱 =  发送消息, 触发回调函数

 

       在linux中, 有5中I/O模型, 分别与上述五种要钱方式对应, 也即是:

       1. 同步, 阻塞IO            ------ 儿子要焦急等待老子准备钱, 焦急等待拿到钱

       2. 同步, 非阻塞IO        ------ 儿子立即知道是否有钱, 但要反复催要, 焦急等待拿到钱

       3. 同步, 多路复用IO    ------  儿子要焦急等待老子准备钱, 焦急等待拿到钱

       4. 同步, 信号驱动IO    ------  本文先不说

       5. 异步IO                        ------ 儿子立即知道是否有钱, 也不用焦急等待拿到钱, 而是边泡妞, 边等待老子汇钱, 两全其美

 

       好的, 先说到这里了, 想必大家对五种IO模型, 异步和非阻塞的区别有所了解了。 实际上, 在非阻塞模式中, 第一个过程是非阻塞的, 第二个过程是阻塞的, 所以, 总体体现为阻塞, 这就有点同步的感觉了。

 

       本文就先扯淡到这里, 后续我们会进行更深入的分析, 到时再一起嗨奋斗

       就这样。

 

 

 

 

 

这篇关于儿子该如何找老子要钱------浅聊linux中的5种I/O模型并顺便说说异步和非阻塞的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/684470

相关文章

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

Linux中shell解析脚本的通配符、元字符、转义符说明

《Linux中shell解析脚本的通配符、元字符、转义符说明》:本文主要介绍shell通配符、元字符、转义符以及shell解析脚本的过程,通配符用于路径扩展,元字符用于多命令分割,转义符用于将特殊... 目录一、linux shell通配符(wildcard)二、shell元字符(特殊字符 Meta)三、s

Linux之软件包管理器yum详解

《Linux之软件包管理器yum详解》文章介绍了现代类Unix操作系统中软件包管理和包存储库的工作原理,以及如何使用包管理器如yum来安装、更新和卸载软件,文章还介绍了如何配置yum源,更新系统软件包... 目录软件包yumyum语法yum常用命令yum源配置文件介绍更新yum源查看已经安装软件的方法总结软

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

Linux:alias如何设置永久生效

《Linux:alias如何设置永久生效》在Linux中设置别名永久生效的步骤包括:在/root/.bashrc文件中配置别名,保存并退出,然后使用source命令(或点命令)使配置立即生效,这样,别... 目录linux:alias设置永久生效步骤保存退出后功能总结Linux:alias设置永久生效步骤

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动