ACE_Svc_Handler何时退出?
ACE_Svc_Handler继承至ACE_Task。问题是:ACE_Svc_Handler的实例中open之后,怎么退出?
ACE_Task好像是在svc函数结束,线程就退出了,但是ACE_Svc_Handler没有自己去实现svc函数,怎么判断其退出呢?handle_close函数返回-1是不是退出?我用ACE_Thread_Manager::instance()->wait();等待线程退出,但是这个函数始终没有返回?说明线程还没有退出完全。 汗。。反了
是ACE_Task继承自ACE_Svc_Handler 你反了吧 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 编辑 ] 多谢,4楼,说的有道理。 汗。。看成ACE_Event_Handler了。
很久没搞connector acceptor框架了,印象模糊了。。
向楼主表示抱歉。。。
页:
[1]