yleesun 发表于 2009-6-22 15:34:08

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();等待线程退出,但是这个函数始终没有返回?说明线程还没有退出完全。

wishel 发表于 2009-6-22 16:09:58

汗。。反了
是ACE_Task继承自ACE_Svc_Handler

yleesun 发表于 2009-6-22 18:56:57

你反了吧

modern 发表于 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 编辑 ]

yleesun 发表于 2009-6-23 09:46:44

多谢,4楼,说的有道理。

wishel 发表于 2009-6-23 14:01:22

汗。。看成ACE_Event_Handler了。
很久没搞connector acceptor框架了,印象模糊了。。
向楼主表示抱歉。。。
页: [1]
查看完整版本: ACE_Svc_Handler何时退出?