(转)ACE示例3 - ACE Proactor

这个示例将用ACE Proactor来实现echo server
代码量差不多只有完成端口的1/3

ACE Reactor的实现
http://www.cppblog.com/sandy/archive/2006/02/17/3308.html

完成端口的实现
http://www.cppblog.com/sandy/archive/2007/06/06/25670.html


当然如果你理解了完成端口,ACE Proactor就很简单了

大概的过程是这个样子的
1.使用ACE_Asynch_Acceptor来建立服务器端的socket,然后bind,listen等待Accept并创建IOCP
(相对于ACE Reactor的ACE_Acceptor)
2.当出现完成事件(GetQueuedCompletionStatus)返回时,调用用户的处理接口来处理,这是一个派生于ACE_Service_Handler的子类
(相对于ACE  Reactor的ACE_Svc_Handler)

ACE Reactor和Proactor最大的不同就是
ACE Reactor在处理读写事件的时候,要使用peer().recv/send来接收/发送数据。
而ACE Proactor在处理读写事件的时候,数据已经被读到用户的缓冲区了,典型的"先斩后奏"
ACE Proactor比ACE Reactor麻烦的地方是需要手工去投递异步读写的请求。


可以通过下面的代码来去体会。

 

转自:http://www.cppblog.com/sandy/archive/2007/06/19/26633.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值