- 浏览: 498571 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (502)
- Java (70)
- Linux (10)
- 数据库 (38)
- 网络 (10)
- WEB (13)
- JSP (4)
- 互联网 (71)
- JavaScript (30)
- Spring MVC (19)
- HTML (13)
- CSS (3)
- AngularJS (18)
- Redis (5)
- Bootstrap CSS (1)
- ZooKeeper (4)
- kafka (6)
- 服务器缓存 (4)
- Storm (1)
- MongoDB (9)
- Spring boot (16)
- log4j (2)
- maven (3)
- nginx (5)
- Tomcat (2)
- Eclipse (4)
- Swagger (2)
- Netty (5)
- Dubbo (1)
- Docker (7)
- Hadoop (12)
- OAuth (1)
- webSocket (4)
- 服务器性能 (7)
- Session共享 (1)
- tieye修改 (1)
- 工作 (1)
- 有用的语录 (0)
- https (2)
- common (5)
- 产品开发管理 (1)
- CDN 工作原理 (1)
- APNS、GCM (1)
- 架构图 (3)
- 功能实现分析 (1)
- JMX (1)
- 服务器相关操作命令 (1)
- img02 (0)
- 服务器环境搭建 (9)
- goodMenuBook (1)
- CEInstantPot (0)
- 有用数据 (1)
- 百度地图WEB API (2)
- 正则表达式 (1)
- 样式例子 (2)
- staticRecipePressureCooker.zip (1)
- jCanvas (1)
- 网站攻击方法原理 (1)
- 架构设计 (3)
- 物联网相关 (3)
- 研发管理 (7)
- 技术需求点 (1)
- 计划 (1)
- spring cloud (11)
- 服务器开发的一些实用工具和方法 (1)
- 每天学到的技术点 (4)
- Guava (1)
- ERP 技术注意要点 (2)
- 微信小程序 (1)
- FineRepor (1)
- 收藏夹 (1)
- temp (5)
- 服务架构 (4)
- 任职资格方案 (0)
- osno_test (1)
- jquery相关 (3)
- mybatis (4)
- ueditor (1)
- VueJS (7)
- python (10)
- Spring EL (1)
- shiro (1)
- 前端开发原理与使用 (7)
- YARN (1)
- Spark (1)
- Hbase (2)
- Pig (2)
- 机器学习 (30)
- matplotlib (1)
- OpenCV (17)
- Hystrix (1)
- 公司 (1)
- miniui (4)
- 前端功能实现 (3)
- 前端插件 (1)
- 钉钉开发 (2)
- Jenkins (1)
- elasticSearch使用 (2)
- 技术规范 (4)
- 技术实现原理 (0)
最新评论
IO - 同步,异步,阻塞,非阻塞
阻塞与非阻塞(进程有没有挂起)
阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.(就是进程有没有被挂起)
阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。
同步与异步(调用有没有等待返回结果)
同步和异步关注的是消息通信机制(调用得到的是不是结果(想要的内容),而不是设置状态和操作状态的返回)
所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。
换句话说,就是由*调用者*主动等待这个*调用*的结果。
而异步则是相反,*调用*在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,
调用者不会立刻得到结果。而是在*调用*发出后,*被调用者*通过状态、通知来通知调用者,或通过回调函数处理这个调用。
阻塞I/O模型(同步阻塞)
blocking IO的特点就是在IO执行的两个阶段都被block了
非阻塞IO模型(同步非阻塞)
IO执行的第二个阶段被block了
IO复用模型(同步阻塞(但可以同时处理多个IO))
两个阶段都被block了
信号驱动IO(异步)
第二个阶段被block了
异步IO模型(异步非阻塞)
二个阶段没有被block,但占用内存空间较多(因为要准备好数据空间用于内核将数据复制到用户空间)
5个I/O模型的比较
AIO(异步非阻塞IO):
就是在进行IO调用时要准备好数据存放的空间,调用时告诉内核这个空间的地址,当有数据到达时,内核在这个
空间中得到数据或写数据到这个空间,内核读/写好后就发送通知或回调使进程知道这个事。
参考原文件:http://www.cnblogs.com/renxs/p/3683189.html
阻塞与非阻塞(进程有没有挂起)
阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.(就是进程有没有被挂起)
阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。
同步与异步(调用有没有等待返回结果)
同步和异步关注的是消息通信机制(调用得到的是不是结果(想要的内容),而不是设置状态和操作状态的返回)
所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。
换句话说,就是由*调用者*主动等待这个*调用*的结果。
而异步则是相反,*调用*在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,
调用者不会立刻得到结果。而是在*调用*发出后,*被调用者*通过状态、通知来通知调用者,或通过回调函数处理这个调用。
阻塞I/O模型(同步阻塞)
blocking IO的特点就是在IO执行的两个阶段都被block了
非阻塞IO模型(同步非阻塞)
IO执行的第二个阶段被block了
IO复用模型(同步阻塞(但可以同时处理多个IO))
两个阶段都被block了
信号驱动IO(异步)
第二个阶段被block了
异步IO模型(异步非阻塞)
二个阶段没有被block,但占用内存空间较多(因为要准备好数据空间用于内核将数据复制到用户空间)
5个I/O模型的比较
AIO(异步非阻塞IO):
就是在进行IO调用时要准备好数据存放的空间,调用时告诉内核这个空间的地址,当有数据到达时,内核在这个
空间中得到数据或写数据到这个空间,内核读/写好后就发送通知或回调使进程知道这个事。
参考原文件:http://www.cnblogs.com/renxs/p/3683189.html
发表评论
-
windowx 命令
2020-10-23 17:35 290windowx 端口占用 netstat -aon|finds ... -
linux常用命令
2020-04-08 08:21 328zip压缩目录 zip -qr test.zip /usr/t ... -
Linux 是如何实现阻塞进程功能的原理
2019-01-12 11:42 1686Linux 是如何实现阻塞进程功能的原理 linux等 ... -
shell 语法
2017-09-09 10:59 432shell 语法 #!/bin/bash //#!告诉 ... -
Linux 命令使用集
2017-01-06 16:40 416Linux 命令使用集 //====== ... -
select、poll、epoll之间的区别总结
2016-09-06 14:46 1276select、poll、epoll之间的 ... -
日志文件系统
2016-09-06 10:14 556日志文件系统 日志文件系统当然要记录日志,而日志也需要占存储 ... -
Linux的原子操作与同步机制
2016-08-18 08:34 647Linux的原子操作与同步 ... -
Linux线程同步 读写锁 rwlock
2016-08-17 11:54 849读写锁比mutex有更高的适用性,可以多个线程同时占用读模式的 ...
相关推荐
这里我们将深入探讨同步IO、异步IO、阻塞IO和非阻塞IO的概念,理解它们的工作原理以及在实际应用中的差异。 1. 同步IO与异步IO: - **同步IO**:在同步模式下,应用程序执行I/O操作时会等待操作完成。这意味着程序...
在Java中,I/O处理经历了从传统的BIO(阻塞I/O),到NIO(非阻塞I/O),再到AIO(异步I/O)的演变过程。本书所关注的主要是NIO,因为它是Java中实现可扩展网络服务的关键。 ### 关键知识点 1. **可扩展网络服务**...
根据《Unix 网络编程》的分类,I/O模型可以分为五类:阻塞IO、非阻塞IO、IO复用(如select、poll、epoll)、信号驱动IO和异步IO。然而,POSIX标准将它们简化为两类:同步IO和异步IO。区分这两者的关键在于,同步I/O...
3. **异步阻塞I/O**:结合了非阻塞I/O和阻塞通知机制,如select/poll/epoll,用于检测I/O描述符的状态变化。虽然提供了多描述符通知的便利,但在高性能场景下效率不足。 4. **异步非阻塞I/O(AIO)**:真正实现了I/O...
- **定义**:AIO是一种异步非阻塞的IO模型,客户端的I/O请求由操作系统先完成,然后通知服务器应用启动线程进行处理。 - **适用场景**:适合连接数较多且连接时间较长的应用,如相册服务器。 - **特点**: - 充分...
1. **IO模型**:IO模型主要有五种,包括同步阻塞IO、同步非阻塞IO、IO多路复用、信号驱动IO和异步IO。同步阻塞IO是最传统的模型,当进程发起IO请求后,会一直等待数据准备好;同步非阻塞IO则允许进程在等待数据时...
本学习资料"io-study.7z"聚焦于三种主要的I/O模型:BIO(Blocking I/O)、NIO(Non-blocking I/O)和AIO(Asynchronous I/O),通过源码实例来帮助开发者深入理解它们的特点和适用场景。 1. **BIO(阻塞I/O)**: ...
首先,我们来看BIO,即同步阻塞IO模型。在BIO中,每个客户端连接都会分配一个单独的线程进行处理,这意味着如果有很多连接,服务器会创建大量线程,可能导致资源过度消耗。例如,服务端代码中的`ServerSocket.accept...
3. **异步阻塞 I/O**:结合非阻塞 I/O 和阻塞 I/O 的特点,通过 select 或 poll 等系统调用来监听多个描述符,当有数据准备好时得到通知。然而,select 和 poll 效率较低,不适合高并发场景。 4. **异步非阻塞 I/O...
3. 同步/异步阻塞/非阻塞 同步和异步是针对消息通知机制而言的。同步操作是指执行操作后需要等待结果通知,而异步操作则是提交后即可继续其他任务,由系统在适当的时候发送通知。阻塞和非阻塞则是针对程序(线程)...
AIO,又称NIO.2,进一步提升了IO性能,提供了异步非阻塞的IO操作,使得应用程序可以注册感兴趣的IO事件,然后继续执行其他任务,当事件发生时,操作系统会通知应用程序。 6. 应用场景 - BIO适合简单、低并发的...
这里有五种主要的IO模型,它们分别是阻塞IO(BIO)、非阻塞IO、IO多路复用、信号量和异步IO(AIO)。理解这些模型的关键在于区分同步与异步以及阻塞与非阻塞的概念。 同步与异步主要关乎应用程序与内核交互时的等待...
2. **同步与异步、阻塞与非阻塞**: - **同步与异步**: - **同步**:任务执行期间,程序需要等待任务完成才能继续执行后续操作。例如打电话时必须等到通话结束才能进行下一个动作。 - **异步**:任务执行期间,...
在Linux操作系统中,有五种主要的IO模型,分别是阻塞IO、非阻塞IO、IO多路复用、信号驱动IO和异步IO。这些模型决定了应用程序如何与硬件进行交互,以获取和处理输入/输出数据。以下是对这五种模型的详细解释: 1. ...
3. **异步阻塞I/O**:通过使用select、poll或epoll等系统调用,应用程序可以非阻塞地检查多个文件描述符的就绪状态。当某个描述符准备就绪时,再进行I/O操作。然而,select调用的效率较低,不适合高吞吐量的场景。 ...
- 同步与异步:同步IO操作会阻塞执行,直到操作完成;异步IO则允许程序在等待IO完成期间继续执行其他任务。 - 阻塞与非阻塞:阻塞IO在等待数据准备好时会挂起进程;非阻塞IO则不会挂起,会立即返回状态。 2. **...
- 网络API如`Socket`和`ServerSocket`也属于同步阻塞IO,因为它们的通信也是IO行为。 2. **非阻塞IO(NIO)**: - 在Java 1.4引入,包含在`java.nio`包中,引入了Channel、Selector和Buffer等新概念。 - 可以...
2. **异步I/O**:除了使用epoll进行同步非阻塞I/O,还可以考虑结合异步I/O(如AIO)进一步提高性能。 3. **连接复用**:使用TCP连接池可以减少建立和关闭连接的开销,同时提高连接的复用率。 4. **延迟接受**:避免...
- 同步I/O与异步I/O:同步I/O操作会阻塞进程直到I/O操作完成,而异步I/O则允许进程在等待I/O操作完成时继续执行其他任务。 - ioapi提供了这两种模型的抽象,使得开发者可以通过统一的接口来选择合适的模型。 2. *...