`

对于reactor和proactor两种模式的个人理解

    博客分类:
  • nio
 
阅读更多

其实要理解这两种模式很多人会说这很简单,无非一种是同步非阻塞行(nio),一种是异步非阻塞行(aio),但是对于什么是同步和非阻塞呢,什么是异步非阻塞呢,

首先来谈谈我的理解,同步和异步这两种是针对数据的就绪状态,即数据是否可以读,网络通道中是否有数据读,
阻塞和非阻塞是针对数据的一种处理状态,阻塞是由线程自己去处理数据,非阻塞则是由系统(操作系统)自己去读取数据到事先线程设定的缓冲区中,
同步异步指的是通信模式,而阻塞和非阻塞指的是在接收和发送时是否等待动作完成才返回所以不能混淆这四个词
其实无论是同步、异步、阻塞、非阻塞都是针对I/O的不同时间段,不同状态而产生的一种术语
下面拷贝网上的对于四种词汇的理解

  同步 

  所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回

  异步 

  异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。

 阻塞 

  阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。 

非阻塞 

  非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。 

在给上两张图来说明一下,不过不知道大家是否都能理解这个图(当然这个图也是我从网上截下来的),不明白的可以共同探讨

 

 

 

  • 大小: 25.6 KB
  • 大小: 29.4 KB
分享到:
评论

相关推荐

    actor和proactor模式1

    在IT领域,特别是网络编程和并发处理中,`Actor`和`Proactor`模式是两种重要的设计模式,它们主要用于高效地处理I/O操作。...理解并熟练运用这两种模式,对于编写高性能、高并发的网络服务程序至关重要。

    Proactor和Reactor模式_继续并发系统设计的扫盲[参照].pdf

    在并发系统设计中,Proactor和Reactor模式是两种常用的设计模式,它们主要用来处理I/O操作的事件派发和分离。这两种模式都是为了提高...在软件开发中,理解这两种模式可以帮助开发者设计出更高效、更健壮的并发系统。

    p401 - p418 proactor -Reactor模型

    Reactor 模式是基于 I/O 多路复用的技术实现的,它主要由 Reactor 和处理资源池这两个核心部分组成。Reactor 负责监听和分发事件,事件类型包含连接事件、读写事件;处理资源池负责处理事件,如 read -> 业务逻辑 ->...

    两种高性能IO设计模式(ReactorProactor)的比较.docx

    本文主要对比了两种主要的I/O多路复用模式:Reactor和Proactor,这两种模式都是为了克服传统阻塞I/O的性能瓶颈而提出的。 首先,阻塞I/O在调用操作时会占用调用线程,直到操作完成,导致资源浪费和低效率。而非阻塞...

    Network Pattern

    常见的网络模式有Reactor和Proactor两种,它们在并发处理和异步操作中扮演着关键角色。 **Reactor模式** Reactor模式是一种事件驱动的设计模式,广泛应用于多线程和网络编程。它的核心思想是通过一个中心调度器...

    cpp-利用C编写的HTTP服务器使用线程池Reactor模式

    本项目是基于C++实现的一个简单的HTTP服务器,它利用了线程池和Reactor模式,这两种技术在现代网络编程中具有重要的地位。 **HTTP服务器基础** HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,用于从...

    ACE网络编程模式比较

    在两种多线程框架中,线程池用于管理和调度工作线程。过多的线程会导致额外开销,但适当数量的线程可以提升响应速度,提高用户满意度。线程池的大小应根据系统负载和处理请求的时间来调整。 7. **多处理器系统中的...

    Java NIO:浅析IO模型_动力节点Java学院整理

    本文将从同步和异步的概念开始,然后介绍阻塞和非阻塞的区别,接着介绍阻塞IO和非阻塞IO的区别,最后介绍五种IO模型和两种高性能IO设计相关的设计模式(Reactor和Proactor)。 一、同步和异步 同步和异步是IO模型...

    从零学架构无评论版

    高性能架构模式:将介绍高性能数据库集群读写分离、分库分表两种方案,NoSQL 方案的典型特征和应用场景,缓存的架构设计三大要点;介绍 PPC、TPC、Reactor、Proactor 模型提升性能,以及负载均衡的分类与架构、算法...

    基于Linux系统的构建高性能服务器的研究.pdf

    1. **事件处理模式**:论文提到了两种主要的事件处理模式——Reactor和Proactor模型。Reactor模式是一种同步事件驱动设计模式,它处理多个输入源的事件,通过分发器将事件分发给相应的处理器。而Proactor模式是异步I...

    C++网络编程 卷2 基于ACE和框架的系统化复用.zip

    3. **I/O复用**:探讨ACE的Reactor和Proactor模式,这两种模式分别对应于传统的事件驱动编程和异步事件通知,它们是实现高效I/O操作的关键。 4. **网络通信**:详细阐述TCP和UDP协议的使用,包括连接建立、数据传输...

    Linux高性能服务器编程源码,linux高性能服务器编程pdf,CC++源码.zip.zip

    Reactor适合处理同步I/O,而Proactor适用于异步I/O,理解这两种模式及其适用场景对于编写高并发服务器至关重要。 7. **错误处理与调试**:良好的错误处理和日志记录机制是任何服务器程序不可或缺的部分,这有助于在...

    C++多线程编程介绍,技巧及注意要点-Part_3.pptx

    进一步讨论,Proactor和Reactor模式是异步I/O的两种实现方式。同步I/O操作(如传统的阻塞I/O)是顺序等待的,而异步I/O则允许在等待期间执行其他任务。在Proactor模式下,操作系统负责完成I/O操作并触发回调,而在...

    Unix多线程和socket编程技术培训教材.rar

    常见的服务器架构有单线程、多线程和事件驱动模型(如Reactor和Proactor模式)。理解这些架构的优缺点和适用场景对于构建高性能服务器至关重要。 4. **日志机制**: 在多线程网络编程中,日志记录是必不可少的调试...

    Java NIO:浅析I/O模型

    说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,接下来介绍了5种IO模型,后介绍了两种和高性能IO设计相关的设计模式(Reactor和Proactor)。...

    unix网络编程技术与分析.rar

    例如,服务器可能采用并发模型(如fork每连接一个新进程)或事件驱动模型(如Reactor或Proactor模式)来处理多个客户端请求。 总之,《Unix网络编程技术与分析》这本书全面解析了Unix环境下的网络编程,对于任何想...

    ACE中文技术开发文档

    - **Stream和Datagram**:ACE提供了TCP和UDP两种传输层协议的接口,Stream对应TCP的流式通信,Datagram对应UDP的无连接通信。 - **TCP/UDP Endpoint**:表示网络通信的地址和端口,是连接建立的基础。 - **Timer ...

    C++ Network Programming(ACE) EN & CN

    2. **ACE库的架构**:了解ACE的核心组件,如Acceptor-Connector设计模式,Reactor和Proactor模式,以及ACE_Wrapper层。 3. **并发和多线程**:学习如何使用ACE进行线程管理和并发控制,包括线程池的使用。 4. **异步...

Global site tag (gtag.js) - Google Analytics