找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 5201|回复: 1

ACE_Reactor中使用register_handle()的注意事项

[复制链接]
发表于 2008-9-10 23:03:21 | 显示全部楼层 |阅读模式
前几天做一个基于UDP的服务器。需要建立多个处理器,其中一个处理器为主服务,同时侦听2~4个端口;其它为子服务,都针对一个端口。子服务是根据客户端的请求,动态生成的。
       由于主服务同时侦听侦听2~4个端口,所以使用了register_handle()一个3参数变体:register_handler (const ACE_Handle_Set &handles, ACE_Event_Handler *event_handler, ACE_Reactor_Mask masks);
      子服务使用的是register_handle()常用的2参数变体:register_handler (ACE_Event_Handler *event_handler, ACE_Reactor_Mask mask)
      编译一路ok,但在实际运行过程中,当需要动态生成子服务时,报错register_handle()的参数错误。在网上查找,也没有找到如何解决。
      后来,怀疑是在一个Reactor实例中(我所有的服务使用ACE_Reactor::instance() )只能用一种register_handle()变体。于是将所有的register_handle()调用统一改为:register_handler (ACE_HANDLE io_handle, ACE_Event_Handler *event_handler, ACE_Reactor_Mask mask)。
      问题解决,可以动态生成子服务,并完成相应的功能。
发表于 2011-3-3 10:08:37 | 显示全部楼层
学习了,一年前也遇到了这个问题
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-4-23 17:21 , Processed in 0.012821 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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