和ACE_Connector关联的ACE_Svc_Handler对象什么时候被释放啊?
看了ACE_Connector.close()的代码,里面有释放Handler对象的操作。但用例子测试了一下,发现有个奇怪的问题,就是ACE_Connector.close调用之后,还可以成功通过Handler对象来发送数据。用例如下:MyServiceHandler * handler= new MyServiceHandler;
Connector myconnector;
myconnector.connect(handler, addr);
handler->Peer()->send(argv,20);
ACE_OS::printf("before recv in main\n");
ret =handler->Peer()->recv(date, 20);
ACE_OS::printf("after recv in main, back date is %s, ret = %d \n", date, ret);
myconnector.close();
//delete handler;
ACE_OS::sleep(2);
ret = handler->Peer()->send(argv,20);
ACE_OS::printf("before exit, ret = %d \n", ret);
connector.close()调用之后,最后的一个snd操作是可以成功的, 而且MyServiceHandler 的析构函数也没有立刻调用。
但是把红色的部分注释去掉的话,后面的发送就失败了。
哪位老大帮忙解答一下。多谢多谢。 和ACE_Connector关联的ACE_Svc_Handler对象?????
这是个工厂,你可以connect多次,那来的关联对象。。
ACE_Connector::close()..只是取消所有挂起的非阻塞连接操作,同时调用与这些挂起的连接操作相关的处理器的close()。。
页:
[1]