儿子该如何找老子要钱------浅聊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

相关文章

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

使用Python实现一个优雅的异步定时器

《使用Python实现一个优雅的异步定时器》在Python中实现定时器功能是一个常见需求,尤其是在需要周期性执行任务的场景下,本文给大家介绍了基于asyncio和threading模块,可扩展的异步定... 目录需求背景代码1. 单例事件循环的实现2. 事件循环的运行与关闭3. 定时器核心逻辑4. 启动与停

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

go 指针接收者和值接收者的区别小结

《go指针接收者和值接收者的区别小结》在Go语言中,值接收者和指针接收者是方法定义中的两种接收者类型,本文主要介绍了go指针接收者和值接收者的区别小结,文中通过示例代码介绍的非常详细,需要的朋友们下... 目录go 指针接收者和值接收者的区别易错点辨析go 指针接收者和值接收者的区别指针接收者和值接收者的

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、