|
当客户端连接到上面的服务器类后,成功启动svc线程,这时如果客户端断开连接,进入handle_close函数,则执行到delete this时,会在析构函数中死循环,一直出不来,导致handle_close无法退出,不启动svc则无该问题
Windows下没有这种问题
请教牛人帮忙解释一下是啥问题啊??
class ServerServiceHandler : public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_MT_SYNCH>
{
.......
};
int ServerServiceHandler::open(void*)
{
activate(THR_NEW_LWP, 1);
......
}
int ServerServiceHandler::handle_close(ACE_HANDLE h, ACE_Reactor_Mask mask)
{
.....
delete this;
.....
}
int ServerServiceHandler::svc()
{
ACE_Time_Value tv(1, 0);
while (true)
{
ACE_Message_Block *mb;
if (this->getq (mb, &tv) == -1)
{
continue;
}
} |
|