Atitit  五种IO模型attilax总结 blocking和non-blocking synchronous IO和asynchronous I

 

1.1. .3 进程的阻塞1

1.2. 网络IO的模型大致有如下几种:1

1.3.  IO 模型的简单矩阵。如下图所示:2

2. 五种IO模型总结2

2.1. 3.1 blocking和non-blocking区别2

2.2. 3.2 synchronous IO和asynchronous IO区别2

2.3. 各个IO Model的比较如图所示:3

 

 

同步、异步、阻塞与非阻塞

1.1. .3 进程的阻塞

正在执行的进程,由于期待的某些事件未发生,如请求系统资源失败、等待某种操作的完成、新数据尚未到达或无新工作做等,则由系统自动执行阻塞原语(Block),使自己由运行状态变为阻塞状态。可见,进程的阻塞是进程自身的一种主动行为,也因此只有处于运行态的进程(获得CPU),才可能将其转为阻塞状态。当进程进入阻塞状态,是不占用CPU资源的。

1.2. 网络IO的模型大致有如下几种:

· 同步模型(synchronous IO)

o 阻塞IO(bloking IO)

o 非阻塞IO(non-blocking IO)

o 多路复用IO(multiplexing IO)

o 信号驱动式IO(signal-driven IO)

· 异步IO(asynchronous IO)

注:由于signal driven IO在实际中并不常用,所以我这只提及剩下的四种IO Model。

1.3.  IO 模型的简单矩阵。如下图所示:

2. 五种IO模型总结

2.1. 3.1 blocking和non-blocking区别

调用blocking IO会一直block住对应的进程直到操作完成,而non-blocking IO在kernel还准备数据的情况下会立刻返回。

2.2. 3.2 synchronous IO和asynchronous IO区别

在说明synchronous IO和asynchronous IO的区别之前,需要先给出两者的定义。POSIX的定义是这样子的:

A synchronous I/O operation causes the requesting process to be blocked until that I/O operation completes;

An asynchronous I/O operation does not cause the requesting process to be blocked;

两者的区别就在于synchronous IO做”IO operation”的时候会将process阻塞。按照这个定义,之前所述的blocking IO,non-blocking IO,IO multiplexing都属于synchronous IO。

2.3. 各个IO Model的比较如图所示:

Linux 五种IO模型 - paincupid的专栏 - 博客频道 - CSDN.NET.html

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )

汉字名:艾提拉(艾龙),   EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

Atiend

转载于:https://www.cnblogs.com/attilax/p/6098812.html

Atitit  五种IO模型attilax总结 blocking和non-blocking synchronous IO和asynchronous I相关推荐

  1. springBoot整合rabbitmq并测试五种常用模型

    之前我们记录了原生java代码使用rabbitmq的方法,很简单,类似于原生jdbc代码一样,将连接对象抽离出来作为工具类,生产者和消费者通过工具类获取连接对象,进而获取通道对象,再注册交换机或者是队 ...

  2. Web3 网络效应:五种心智模型

    Web3 网络效应:五种心智模型 在过去的十年里,网络效应推动了Web2平台的崛起,也奠定了其主导地位,同时激发了建设者和投资者的想象力.一些人认为网络效应在Web3中会更加强大,而另一些人则认为We ...

  3. AEB 五种安全距离模型

    写在前面当汤喝   AEB,即"Autonomous Emergency Braking"的缩写,意为自动紧急制动系统,可以在检测到危险时通过系统协助驾驶者进行制动,从而避免或减少 ...

  4. RabbitMQ除开RPC的五种消模型----原生API

    2.五种消息模型 RabbitMQ提供了6种消息模型,但是第6种其实是RPC,并不是MQ,因此不予学习.那么也就剩下5种. 但是其实3.4.5这三种都属于订阅模型,只不过进行路由的方式不同. 通过一个 ...

  5. SpringBoot整合RabbitMQ 实现五种消息模型

    目录 SpringBoot中使用RabbitMQ 搭建初始环境 引入依赖 配置配置文件 测试类 注入 rabbitTemplate 消息队列RabbitMQ之五种消息模型 第一种直连模型使用 开发生产 ...

  6. 【干货】机器学习中的五种回归模型及其优缺点

    http://blog.itpub.net/31542119/viewspace-2199810/ 线性和逻辑斯蒂(Logistic)回归通常是是机器学习学习者的入门算法,因为它们易于使用和可解释性. ...

  7. linux 五种IO模型 简介

    Linux下主要的IO主要分为:阻塞IO(Blocking IO),非阻塞IO(Non-blocking IO),同步IO(Sync IO)和异步IO(Async IO). 同步:调用端会一直等待服务 ...

  8. 聊聊 Linux 中的五种 IO 模型

    聊聊 Linux 中的五种 IO 模型 2016/04/21 · IT技术 · 8 评论 · iO, 同步, 异步, 阻塞, 非阻塞 分享到:0 本文作者: 伯乐在线 - 陶邦仁 .未经作者许可,禁止 ...

  9. 详解Linux 五种IO模型

    原文:https://www.jianshu.com/p/486b0965c296 上一篇 同步.异步.阻塞.非阻塞 已经通俗的讲解了,要理解同步.异步.阻塞与非阻塞重要的两个概念点了,没有看过的,建 ...

最新文章

  1. python创建列向量_关于Numpy中的行向量和列向量详解
  2. SkipList 跳表
  3. SSH访问控制,多次失败登录即封掉IP,防止暴力破解
  4. 什么是OOA/OOD
  5. flush privileges
  6. JS面试之对象(2)
  7. Dual-polarity supply provides ±12V from one IC
  8. cocos2d-x自制工具07:打印cocos2d-x的节点树
  9. LayaAir TTF字体使用
  10. linux之svn回滚/回退到某个版本
  11. frida hook 出现 Process terminated
  12. Debezium系列之:Debezium UI部署详细步骤
  13. 在短短几分钟内用冰柱构建超快速PHP服务器
  14. 通过宏函数计算结构体成员偏移量
  15. 车轮轨迹原理_方向盘与车轮轨迹图解,方向盘和车轮的动态图
  16. java 正序a~z_java 策略模式,list集合,实现id 姓名年龄正序倒序排序(如果年龄或者姓名重复,按id正序排序)...
  17. java timestamp 使用_Java中针对Timestamp的操作解析
  18. zabbix报警-邮件-钉钉
  19. 蓝桥杯练习----数字三角形,Cowboys,Beaver's Calculator
  20. 如何在Activex中使用字体(2)

热门文章

  1. Flink SQL 的 9 个示例
  2. 1分钱,工程师可以做什么?
  3. unity3d干货分享:实现敌人锥形视角的3个方法
  4. 一天学完spark的Scala基础语法教程八、集合(idea版本)
  5. 如何修改Xshell默认存储路径
  6. IT行业分析之企业信息化技术
  7. springboot(1)使用SpringBoot基础HTTP接口GET|POST|DELETE|PUT请求
  8. C++的一些知识点摘抄(创建基本类 高级类)
  9. Spring Annotation(@Autowire、@Qualifier)
  10. CentOS7搭建hadoop2.6.4+HBase1.1.6