diff options
Diffstat (limited to 'TAO/tao/PortableServer/Object_Adapter.cpp')
-rw-r--r-- | TAO/tao/PortableServer/Object_Adapter.cpp | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/TAO/tao/PortableServer/Object_Adapter.cpp b/TAO/tao/PortableServer/Object_Adapter.cpp index 6515171f1cc..ced76a36912 100644 --- a/TAO/tao/PortableServer/Object_Adapter.cpp +++ b/TAO/tao/PortableServer/Object_Adapter.cpp @@ -409,16 +409,6 @@ TAO_Object_Adapter::activate_poa (const poa_name &folded_name, else ++iterator; - // A recursive thread lock without using a recursive thread lock. - // Non_Servant_Upcall has a magic constructor and destructor. We - // unlock the Object_Adapter lock for the duration of the adapter - // activator(s) upcalls; reacquiring once the upcalls complete. - // Even though we are releasing the lock, other threads will not be - // able to make progress since - // <Object_Adapter::non_servant_upcall_in_progress_> has been set. - Non_Servant_Upcall non_servant_upcall (*parent); - ACE_UNUSED_ARG (non_servant_upcall); - for (; iterator != end; ++iterator) @@ -1251,7 +1241,7 @@ TAO_Object_Adapter::Non_Servant_Upcall::Non_Servant_Upcall (TAO_POA &poa) // Adjust the nesting level. this->object_adapter_.non_servant_upcall_nesting_level_++; - // Release the Object Adapter lock. + // We always release this->object_adapter_.lock ().release (); } @@ -1260,12 +1250,11 @@ TAO_Object_Adapter::Non_Servant_Upcall::~Non_Servant_Upcall (void) // Reacquire the Object Adapter lock. this->object_adapter_.lock ().acquire (); + this->object_adapter_.non_servant_upcall_nesting_level_--; + // We are done with this nested upcall. this->object_adapter_.non_servant_upcall_in_progress_ = this->previous_; - // Adjust the nesting level. - this->object_adapter_.non_servant_upcall_nesting_level_--; - // If we are at the outer nested upcall. if (this->object_adapter_.non_servant_upcall_nesting_level_ == 0) { |