Reactor事件注册与解注册
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之间,发生了什么 ?? If u need remove another mask_bit , call remove_handler, else don't call it.重复解注 is wrong! 但是我重复解注没有返回任何错误,呵呵,再说,我在源码中也没有找到自动解注的代码,奇怪 如果是ACE_WFMO_Reactor,handler返回-1,就会通过ACE_WFMO_Reactor_Handler_Repository::unbind_i来解除注册,你调用remove_handler也会是通过ACE_WFMO_Reactor_Handler_Repository::unbind_i来接触注册的。去看看源码就知道了。即使是重复解出注册也是不会有问题的,内部会有判断。 again 重复解注 is wrong!
但是我重复解注没有返回任何错误,呵呵,
It'll bite you later. steven99ca:
能不能解释一下It'll bite you later啊,既然是错的就一定有原因,能不能说明白点?让我们学习学习!thx!
页:
[1]