summaryrefslogtreecommitdiff
path: root/ace/CORBA_Handler.cpp
diff options
context:
space:
mode:
authorlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-09-09 20:47:17 +0000
committerlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-09-09 20:47:17 +0000
commitf9ff29686ecda4e110c4affb8377d9c5697c38b1 (patch)
tree69f04dabd18069b6df3e41b1b609cc932b113dfa /ace/CORBA_Handler.cpp
parent7aae22eb77e41a1c46431af11956bf4ec99c08bb (diff)
downloadATCD-f9ff29686ecda4e110c4affb8377d9c5697c38b1.tar.gz
preallocate locks for CORBA_Handler and Dump in ACE_Object_Manager
Diffstat (limited to 'ace/CORBA_Handler.cpp')
-rw-r--r--ace/CORBA_Handler.cpp29
1 files changed, 22 insertions, 7 deletions
diff --git a/ace/CORBA_Handler.cpp b/ace/CORBA_Handler.cpp
index fd6760ea551..4a859d0a657 100644
--- a/ace/CORBA_Handler.cpp
+++ b/ace/CORBA_Handler.cpp
@@ -4,6 +4,10 @@
#define ACE_BUILD_DLL
#include "ace/CORBA_Handler.h"
+#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
+# include "ace/Object_Manager.h"
+#endif /* ACE_MT_SAFE */
+
#if !defined (__ACE_INLINE__)
#include "ace/CORBA_Handler.i"
#endif /* __ACE_INLINE__ */
@@ -345,7 +349,8 @@ ACE_ALLOC_HOOK_DEFINE(ACE_MT_CORBA_Handler)
#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
// Synchronize output operations.
-ACE_Thread_Mutex ACE_MT_CORBA_Handler::ace_mt_corba_handler_lock_;
+u_int ACE_MT_CORBA_Handler::ace_mt_corba_handler_lock_ =
+ ACE_Object_Manager::ACE_MT_CORBA_HANDLER_LOCK;
#endif /* ACE_MT_SAFE */
void
@@ -359,7 +364,9 @@ ACE_MT_CORBA_Handler::dump (void) const
this->pipe_.dump ();
#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
// Double-Check lock.
- ace_mt_corba_handler_lock_.dump ();
+ ACE_Thread_Mutex *lock = ACE_Managed_Object<ACE_Thread_Mutex>::get_object
+ (ace_mt_corba_handler_lock_);
+ if (lock != 0) lock->dump ();
#endif /* ACE_MT_SAFE */
ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
}
@@ -376,7 +383,12 @@ ACE_MT_CORBA_Handler::instance (void)
if (ACE_MT_CORBA_Handler::instance_ == 0)
{
- ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, ACE_MT_CORBA_Handler::ace_mt_corba_handler_lock_, 0);
+#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
+ ACE_Thread_Mutex *lock = ACE_Managed_Object<ACE_Thread_Mutex>::get_object
+ (ace_mt_corba_handler_lock_);
+ if (lock == 0) return 0;
+ ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, *lock, 0);
+#endif /* ACE_MT_SAFE */
if (ACE_MT_CORBA_Handler::instance_ == 0)
ACE_NEW_RETURN (ACE_MT_CORBA_Handler::instance_,
@@ -447,10 +459,13 @@ ACE_MT_CORBA_Handler::process_events (void *)
// the instance must exist.
if (ACE_MT_CORBA_Handler::instance_ == 0)
{
- ACE_GUARD_RETURN (ACE_Thread_Mutex,
- ace_mon,
- ace_mt_corba_handler_lock_,
- 0);
+#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
+ ACE_Thread_Mutex *lock = ACE_Managed_Object<ACE_Thread_Mutex>::get_object
+ (ace_mt_corba_handler_lock_);
+ if (lock == 0) return 0;
+ ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, lock, 0);
+#endif /* ACE_MT_SAFE */
+
ACE_ASSERT (ACE_MT_CORBA_Handler::instance_ != 0);
}