找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 5125|回复: 2

关于ACE_WFMO_Reactor

[复制链接]
发表于 2011-2-14 10:25:19 | 显示全部楼层 |阅读模式
CNP 2 里面介绍ACE_WFMO_Reactor时提到,如果要分离超过64个句柄,可以在多个线程中使用多个ACE_WFMO_Reactor对象,如果这样的做的话,每个单独的线程里面是否都有自己的单体Reactor?假如是这样,当客户端请求连接时,每个ACE_WFMO_Reactor对象都会检测到,那事件处理器的调用如何解决,总不可能都回调各自的事件处理器或者行为不明确吧
发表于 2011-2-14 16:17:36 | 显示全部楼层
首先你可以每个线程持有一个ACE_WFMO_Reactor的对象,
但是这不叫单体,至少不是对应singleton这个单词。

其次,你写的一个ace_svc_handler的派生类,然后new一个这个类的对象,
这个对象的指针,只会注册到一个ACE_WFMO_Reactor对象上呀,
注册到谁身上,谁处理呗!
发表于 2011-2-14 17:18:23 | 显示全部楼层
如果可以的话,推荐在windows下考虑ACE的Proactor模型。
Proactor模型在Windows上的实现是IOCP的,效能比ACE_WFMO_Reactor要好。
ACE_WFMO_Reactor支持最多62个句柄(这里得刨除至少一个监听句柄)。
与其根据用户链接数量来动态管理反应器,真不如使用Proactor,代码很简单,请参考ACE的Example。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-15 09:44 , Processed in 0.010991 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表