找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4167|回复: 5

ACE_Svc_Handler何时退出?

[复制链接]
发表于 2009-6-22 15:34:08 | 显示全部楼层 |阅读模式
ACE_Svc_Handler继承至ACE_Task。问题是:
ACE_Svc_Handler的实例中open之后,怎么退出?

ACE_Task好像是在svc函数结束,线程就退出了,但是ACE_Svc_Handler没有自己去实现svc函数,怎么判断其退出呢?handle_close函数返回-1是不是退出?我用ACE_Thread_Manager::instance()->wait();等待线程退出,但是这个函数始终没有返回?说明线程还没有退出完全。
发表于 2009-6-22 16:09:58 | 显示全部楼层
汗。。反了
是ACE_Task继承自ACE_Svc_Handler
 楼主| 发表于 2009-6-22 18:56:57 | 显示全部楼层
你反了吧
发表于 2009-6-22 20:10:16 | 显示全部楼层
ACE_Svc_Handler继承至ACE_Task,没错!
不过需要注意一件事情,
ACE_Svc_Handler的open函数被Acceptor或者Connector框架调用之后,
只是打开了连接,但是并没有激活额外线程处理,
ACE_Task激活线程的函数是activate,而不是open。
因此没有必要使用ACE_Thread_Manager::instance()->wait();等待线程退出。
handle_close的默认行为是关闭socket,
自己可以根据实际情况重载这个函数,增加自己的处理行为。

[ 本帖最后由 modern 于 2009-6-23 08:44 编辑 ]
 楼主| 发表于 2009-6-23 09:46:44 | 显示全部楼层
多谢,4楼,说的有道理。
发表于 2009-6-23 14:01:22 | 显示全部楼层
汗。。看成ACE_Event_Handler了。
很久没搞connector acceptor框架了,印象模糊了。。
向楼主表示抱歉。。。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-12-23 17:53 , Processed in 0.017951 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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