void TAO_Thread_Lane_Resources::shutdown_reactor (void) { TAO_Leader_Follower &leader_follower = this->leader_follower (); ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, leader_follower.lock ()); ACE_Reactor *reactor = leader_follower.reactor (); // Wakeup all the threads waiting blocked in the event loop, this // does not guarantee that they will all go away, but reduces the // load on the POA.... // If there are some client threads running we have to wait until // they finish, when the last one does it will shutdown the reactor // for us. Meanwhile no new requests will be accepted because the // POA will not process them. if (!this->orb_core_.resource_factory ()->drop_replies_during_shutdown () && leader_follower.has_clients ()) { reactor->wakeup_all_threads (); } else { // End the reactor if we want shutdown dropping replies along the // way. reactor->end_reactor_event_loop (); } }