`

Proactor模式

 
阅读更多
Proactor模式将所有I/O操作都交给主线程和内核来处理,工作线程仅仅负责业务逻辑.

工作流程:
1.主线程调用aio_read函数向内核注册socket上的读完成事件,并告诉内核用户读缓冲区的位置,以及读操作完成时如何通知应用程序
2.主线继续处理其他逻辑.
3.当socket上的数据被读入用户缓冲区后,内核将向应用程序发送一个信号,以通知应用程序数据已经可用
4.应用程序预先定义好的信号处理函数选择一个工作线程来处理客户请求.工作线程处理完客户请求之后,调用aio_write函数向内核注册socket上的写完成事件,并告诉内核用户写缓冲区的位置,以及写操作完成时如何通知应用程序
5.主线程继续处理其他逻辑
6.当用户缓冲区的数据被写入socket之后,内核将向应用程序发送一个信号,以通知应用程序数据已经发送完毕
7.应用程序预先定义好的信号处理函数选择一个工作线程来做善后处理,比如决定是否关闭socket.
分享到:
评论

相关推荐

    Proactor模式&Reactor模式详解

    ### Proactor模式&Reactor模式详解 #### 一、引言 在服务器端编程领域,构建高效的输入/输出(I/O)模型对于提高程序性能至关重要。根据数据传输方式的不同,通常将I/O模型分为四类:同步阻塞I/O、同步非阻塞I/O、I...

    actor和proactor模式1

    在IT领域,特别是网络编程和并发处理中,`Actor`和`Proactor`模式是两种重要的设计模式,它们主要用于高效地处理I/O操作。这两种模式都涉及到如何有效地管理多个并发的I/O请求,以提高系统性能和响应速度。 首先,...

    C++高性能编程之proactor模式代码示例

    C++高性能并发编程之proactor模式应用实例,应用于网络编程领域,包含一下几个部分: 1 服务器端程序:一个server代码展示如何使用现代C++11编程高并发代码,一个Makefile文件 2 客户端程序:一个客户端代码展示如何...

    tpd_reactor_proactor.pdf

    "Reactor 和 Proactor 模式在网络编程中的应用" Reactor 和 Proactor 模式是两种常见的事件处理模式,在网络编程中广泛应用于设计高效、可靠的并发和网络应用程序。在本文中,我们将详细介绍 Reactor 和 Proactor ...

    对ACE的Proactor通讯模式的全面封装

    Proactor模式是ACE库中提供的一种异步事件处理模型,它允许程序在非阻塞方式下处理I/O操作,提高了系统的并发处理能力。本封装主要目的是使开发者能够在不直接接触ACE底层细节的情况下,利用Proactor模式实现高效的...

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

    不过,Proactor模式强调了操作的非阻塞特性,它在操作系统级别实现了真正的异步,使得处理器可以在等待I/O操作完成的同时处理其他任务,提高了系统的并发效率。 在实际应用中,Reactor模式更适合于那些需要快速响应...

    Windows下采用IOCP实现的ACE的Proactor框架剖析

    ACE(Adaptive Communication Environment)是一个跨平台的C++库,它提供了许多高级网络编程的抽象,包括Proactor模式。Proactor是一种反应式设计模式,它处理异步I/O事件,并将这些事件转化为回调,以非阻塞的方式...

    ACE_Proactor TCP协议通信示例代码

    2. **ACE_Proactor模式**:ACE_Proactor是基于事件的非阻塞I/O模型,它使用了异步事件驱动的编程模型。在该模型中,I/O操作是启动后立即返回的,然后由Proactor在后台处理,当操作完成时,Proactor通过回调函数通知...

    非阻塞IO+Proactor+日志系统 自定义协议服务器.zip

    与传统的异步I/O(如回调函数)不同,Proactor模式通过事件通知机制来处理I/O完成,而不是等到I/O操作完成后回调。当I/O操作准备好时,操作系统会将完成信号放入完成队列,由事件循环检测并处理这些事件,这样可以...

    ACE网络编程模式比较

    Proactor模式在接收消息后,先将消息转化为消息块结构(ACE_Message_Block),再由处理函数处理。这种方式避免了在事件处理过程中的阻塞,提高了效率。 4. **半同步/半异步框架**: 适用于Proactor模式,主线程...

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

    而Proactor模式则涉及异步I/O,事件处理者直接发起异步读写请求,操作系统在后台完成工作,并在操作完成后通过完成事件通知事件处理者。 Reactor模式的例子中,一个事件处理者对特定socket的读事件感兴趣,事件分离...

    Network Pattern

    网络模式是计算机科学中用于处理网络通信...在学习过程中,可以参考各种网络编程书籍,如《UNIX网络编程》、《网络编程黑皮书》等,以及相关的开源项目,如Boost.Asio,它们都提供了Reactor和Proactor模式的具体实现。

    ACE通用服务器ace server

    通过结合Reactor和Proactor模式,开发者可以设计出能够高效处理大量并发连接的应用,这对于实时性要求高、负载大的服务场景非常有益。同时,ACE库的跨平台特性使得这样的服务器可以轻松部署在不同的操作系统上,降低...

    proactor originate

    【Proactor模式详解】 Proactor模式是一种异步事件处理架构模式,主要负责解复用和调度由异步操作完成触发的服务请求。这种模式在处理并发和高性能应用时尤其有用,如高流量的Web服务器。 在传统的反应器模式...

    netty原理的讲解

    Reactor模式是在事件触发后执行实际的I/O操作,而Proactor模式则在注册事件时就执行了实际的I/O操作,然后等待操作完成的通知。Netty虽然主要采用Reactor模式,但在某些平台上也支持Proactor模式,以实现更高效的I/O...

    ACE程序员指南

    在讲解ACE框架时,书中会详细阐述如何利用ACE的Proactor模式进行并发编程。Proactor模式是一种基于事件的非阻塞I/O模型,与传统的Reacto模式相对。在Proactor模式下,系统会在数据准备好时通知应用程序,而不是在...

    ACE开发指南(初级)

    - **Proactor模式**:与Reactor模式类似,但更侧重于处理异步I/O操作。 - **Task框架**:提供了一种基于任务队列的线程管理方式。 #### 二、ACE环境搭建 **2.1 获取ACE** - **官方渠道**:最简单的方式是从ACE官方...

    Boost.Asio

    Proactor模式是一种异步事件处理模式,与Reactor模式不同,Proactor模式是基于事件的完成来实现异步操作的。Proactor模式将操作的发起与事件的处理分离,允许进行高效的事件通知和处理。 Boost.Asio通过Strands来...

Global site tag (gtag.js) - Google Analytics