TProactor

TProactor是在ACE基础上开发的一种高性能异步IO框架,适用于多CPU架构。它通过AIO_Dispatcher和AIO_Processor组件实现高效的异步IO处理。Terabit在此基础上提供了AIO框架,简化了应用程序的开发过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       ACE Proactor模式在Windows性能很好,在Unix/Linux下由于各版本对异步IO支持的不同,ACE Proactor实现的性能不一定好(有的是采用Thread模拟异步IO)。

       Terabit的POSIX Proactor实现TProactor在Windows、Unix/Linux下采用一致的接口,并在任何操作系统下提供不低于TPReactor的性能。TProactor采用Leader-Follower模式,适合多CPU的架构。

       主要类是AIO_Dispather、AIO_Processor和AIO_Provider。

       1) 每个TProactor包含一个AIO_Dispatcher,负责实现Leader-Followwer并在Followers间分配任务(completion jobs)。

       2) 可包含1-2个AIO_Processor,负责发起和取消异步操作、管理异步操作、处理异步完成事件,其具体操作委托AIO_Provider实现。

       3) AIO_Provider是一个抽象类,Provider是一种插件机制。目前提供POSIX_STD_Provider、SELECT_Provider、SUN_Provider和Linux_Native_Provider四种实现。每种实现又有不同的等待异步完成策略(AIO_Wait_Strategy)和中断Leader策略(AIO_Interrupt_Strategy)。各策略细节参见《New Proactor Implementation for POSIX》一文。

       一般地,Linux 2.6推荐使用SELECT_Provider及Event_Poll_Strategy。

 

      TProactor在ACE基础上开发。使用TProactor,有两种方式:

      1) 将ACE Proactor相关类中的ACE_改为对应的TRB_类;

      2) 采用Terabit提供的脚本,修改ACE源码,将TProactor作为ACE Proactor实现类。该方法修改ACE源码后需重新编译ACE库。

      对于新开发的程序,方法1较方便。当然,也可以直接使用下述AIO框架。

 

       Terabit在TProactor基础上,提供AIO框架。由以下核心类组成:

       1) IOThreadPool,可有多个TProactor的线程池;

       2) ChannelAcceptor/ChannelConnector,相当于ACE中的ACE_Asynch_Acceptor和ACE_Asynch_Connector

       3) AsyncChannel,相当于ACE_Service_Handler

       4) Protocol,在ACE中协议处理在ACE_Service_Handler子类中实现,而Terabit则将其进一步抽象为Protocol类来实现。

       为了提高内存管理性能,该框架提供了ChannelManager、AsynchChannelFactory、ProtocolFactory等(模板)类,提供Cached Memory Pool功能。

       采用Terabit AIO框架,开发人员只需要实现Protocol类。但是目前Terabit尚未提供UDP实现类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值