jiuyueshouyi 发表于 2011-2-14 10:25:19

关于ACE_WFMO_Reactor

CNP 2 里面介绍ACE_WFMO_Reactor时提到,如果要分离超过64个句柄,可以在多个线程中使用多个ACE_WFMO_Reactor对象,如果这样的做的话,每个单独的线程里面是否都有自己的单体Reactor?假如是这样,当客户端请求连接时,每个ACE_WFMO_Reactor对象都会检测到,那事件处理器的调用如何解决,总不可能都回调各自的事件处理器或者行为不明确吧

modern 发表于 2011-2-14 16:17:36

首先你可以每个线程持有一个ACE_WFMO_Reactor的对象,
但是这不叫单体,至少不是对应singleton这个单词。

其次,你写的一个ace_svc_handler的派生类,然后new一个这个类的对象,
这个对象的指针,只会注册到一个ACE_WFMO_Reactor对象上呀,
注册到谁身上,谁处理呗!

freeeyes 发表于 2011-2-14 17:18:23

如果可以的话,推荐在windows下考虑ACE的Proactor模型。
Proactor模型在Windows上的实现是IOCP的,效能比ACE_WFMO_Reactor要好。
ACE_WFMO_Reactor支持最多62个句柄(这里得刨除至少一个监听句柄)。
与其根据用户链接数量来动态管理反应器,真不如使用Proactor,代码很简单,请参考ACE的Example。
页: [1]
查看完整版本: 关于ACE_WFMO_Reactor