找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3797|回复: 5

Reactor事件注册与解注册

[复制链接]
发表于 2008-5-21 23:18:00 | 显示全部楼层 |阅读模式
reactor中,handler绑定事件,然后向reactor注册,这都是自己要做的步骤,我不明白的是,如果一个handler绑定了write_mask,read_mask,当handle_input返回-1的时候,ace会自动帮我们做一个事件(read_mask)的解除注册操作,这样,按理说,我们不需要在接下来的handle_close中再调用remove_handler了,但是很多程序都又重新调用了remove_handler,这不是重复解注册吗,不明白ace在handle_input返回-1,和,调用handle_close之间,发生了什么 ??
 楼主| 发表于 2008-5-21 23:18:12 | 显示全部楼层
If u need remove another mask_bit , call remove_handler, else don't call it.  重复解注 is wrong!
 楼主| 发表于 2008-5-21 23:18:25 | 显示全部楼层
但是我重复解注没有返回任何错误,呵呵,

再说,我在源码中也没有找到自动解注的代码,奇怪
 楼主| 发表于 2008-5-21 23:18:33 | 显示全部楼层
如果是ACE_WFMO_Reactor,handler返回-1,就会通过ACE_WFMO_Reactor_Handler_Repository::unbind_i来解除注册,你调用remove_handler也会是通过ACE_WFMO_Reactor_Handler_Repository::unbind_i来接触注册的。去看看源码就知道了。即使是重复解出注册也是不会有问题的,内部会有判断。
 楼主| 发表于 2008-5-21 23:18:45 | 显示全部楼层
again 重复解注 is wrong!
但是我重复解注没有返回任何错误,呵呵,
It'll bite you later.
 楼主| 发表于 2008-5-21 23:18:58 | 显示全部楼层
steven99ca:
能不能解释一下It'll bite you later啊,既然是错的就一定有原因,能不能说明白点?让我们学习学习!thx!
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-12-22 22:46 , Processed in 0.032846 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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