diff options
author | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-06-08 23:46:15 +0000 |
---|---|---|
committer | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-06-08 23:46:15 +0000 |
commit | 6046d7736ee24e64b9ccbab3b1b6460ed6455194 (patch) | |
tree | 2f11dc99ec83fc8c147d954990c46edd5723d20b /TAO/tao/POA.cpp | |
parent | 5de2810d4373e5388e821c2f3ec75d69fd670a9a (diff) | |
download | ATCD-6046d7736ee24e64b9ccbab3b1b6460ed6455194.tar.gz |
Tue Jun 08 18:17:38 1999 Irfan Pyarali <irfan@cs.wustl.edu>
Diffstat (limited to 'TAO/tao/POA.cpp')
-rw-r--r-- | TAO/tao/POA.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/TAO/tao/POA.cpp b/TAO/tao/POA.cpp index 605d225a281..79925667d4b 100644 --- a/TAO/tao/POA.cpp +++ b/TAO/tao/POA.cpp @@ -280,6 +280,17 @@ TAO_POA::find_POA (const char *adapter_name, // Lock access for the duration of this transaction. TAO_POA_GUARD_RETURN (ACE_Lock, monitor, this->lock (), 0, ACE_TRY_ENV); + // 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 servant activator 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. + TAO_Object_Adapter::Non_Servant_Upcall non_servant_upcall (*this->orb_core_.object_adapter ()); + ACE_UNUSED_ARG (non_servant_upcall); + TAO_POA *child = this->find_POA_i (adapter_name, activate_it, ACE_TRY_ENV); |