ACE_Proactor实现

ACE_Proactor在Windows和Posix系统中采用不同的实现策略,提供生命周期管理、事件循环、定时器管理和IO操作的灵活性。在Windows下,它基于IO完成端口;在Posix系统中,如Linux,它利用aio控制块和多线程来实现异步操作。ACE_POSIX_AIOCB_Proactor通常为Linux的默认选择,因为ACE_POSIX_SIG_Proactor在Linux的信号机制限制下无法有效工作。
摘要由CSDN通过智能技术生成

ACE_Proactor实现了Facade模式。
其方法可以分为四类。

  • 生命周期管理方法
  • 事件循环管理方法
  • 定时器管理方法
  • IO操作facilitator方法:
    -须知ACE_Proactor是使用Bridge模式的。ACE_aynch_Read/Write_Stream都是使用Bridge模式来访问他们用于特定的OS平台的IO操作工厂的灵活实现。所有的ACE_Proactor实现实际都转发由ACE_Proactor的实现类(_Impl)来处理。

1.windows中是由ACE_WIN32_Proactor类进行实现的。使用IO完成端口进行完成事件的检测。当初始化一个异步操作的工厂,如ACE_Asynch_Read_Stream时,前摄器的IO完成端口和IO句柄相关联。同时,windows的GetQueuedCompletionStatus函数负责执行射箭循环。同时所有为于ACE_WIN32_Proactor一起使用而定义的Result类都派生自Windows的OVERLAPPED结构。
定时器队列的到期管理在一个单独的线程中处理,是有ACE_WIN32_Proactor管理的。当一个定时器到期时,超时机制使用PostQueuedCompletionStatus函数完成投递给前摄器的IO完成端口。

2.Posix系统则是由ACE_POSIX_Proactor类实现的。异步IO的posix实现使用了控制块(structaiocb),以确定每个异步IO请求和控制信息。每个aiocb同时只能与一个IO请求相关联。
但是虽然封装的Poisx异步IO机制支持read和write操作,但他们不支持任何于TCP/IP连接相关的操作。为了支持ACE_Asynch_Acceptor和ACE_Asynch_Connector的各个函数,使用两外一个线程来执行于连接相关的操作。其实际模拟的过程就是若这两个类中的操作没有立即完成,则将sock

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值