[Ace-users] ACE_Reactor Thread Exits

BlueJayWay sgrsgrsgr at gmail.com
Wed Nov 7 09:04:46 CST 2007


Running ACE v4.5.1 on Solaris 10

We are using the ACE_Select_Reactor to manage TCP stream sockets,
whereby
we register an ACE_Event_Handler with the ACE_Reactor to handle each
socket
connection.

Other than the explicit -1 return from a handle_* callback method, hat
is the correct way to
subsequently inform the ACE_Reactor that we would like to close a
given TCP socket?

Is it OK to call ACE_Reactor::instance()->remove_handler()
from a different thread than the thread running the ACE_Reactor event
loop?

It seems like this causes the socket to be closed and then appears as
EBADF in the ACE_Reactor's select loop.  And if the associated file
descriptor is quickly reused (e.g. for another socket connection or
file),
then there is a window where the ACE_Reactor may get confused and exit
its thread
from within its check_handles() method.

  Thanks



More information about the Ace-users mailing list