diff options
author | levine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-05-16 17:38:28 +0000 |
---|---|---|
committer | levine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-05-16 17:38:28 +0000 |
commit | 1ba63895ea723e8221b6a1e42b090b786b4f4f46 (patch) | |
tree | 938c119558d2a69c29f0d91de6ac4c8b2da1ae44 | |
parent | 140cf4af316591b1d49cbbf90741040cc8a4d730 (diff) | |
download | ATCD-1ba63895ea723e8221b6a1e42b090b786b4f4f46.tar.gz |
(ACE_Log_Msg_Manager::lock_): changed the lock type from
ACE_Thread_Mutex to ACE_Recursive_Thread_Mutex. This allows
ACE_Log_Msg's methods to be called after calling ACE_Log_Msg::acquire
(), without deadlock.
-rw-r--r-- | ace/Log_Msg.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/ace/Log_Msg.cpp b/ace/Log_Msg.cpp index 7ec82e21ced..b53c9a04f6a 100644 --- a/ace/Log_Msg.cpp +++ b/ace/Log_Msg.cpp @@ -75,17 +75,17 @@ class ACE_Log_Msg_Manager // Synchronize output operations. { public: - static ACE_Thread_Mutex *get_lock (void); + static ACE_Recursive_Thread_Mutex *get_lock (void); static void close (void); private: - static ACE_Thread_Mutex *lock_; + static ACE_Recursive_Thread_Mutex *lock_; }; -ACE_Thread_Mutex *ACE_Log_Msg_Manager::lock_ = 0; +ACE_Recursive_Thread_Mutex *ACE_Log_Msg_Manager::lock_ = 0; -ACE_Thread_Mutex * +ACE_Recursive_Thread_Mutex * ACE_Log_Msg_Manager::get_lock (void) { // This function is called by the first thread to create an ACE_Log_Msg @@ -96,7 +96,7 @@ ACE_Log_Msg_Manager::get_lock (void) { ACE_NO_HEAP_CHECK; - ACE_NEW_RETURN_I (ACE_Log_Msg_Manager::lock_, ACE_Thread_Mutex, 0); + ACE_NEW_RETURN_I (ACE_Log_Msg_Manager::lock_, ACE_Recursive_Thread_Mutex, 0); // Allocate the ACE_Log_Msg IPC instance. ACE_NEW_RETURN (ACE_Log_Msg_message_queue, ACE_LOG_MSG_IPC_STREAM, 0); @@ -340,7 +340,7 @@ ACE_Log_Msg::flags (void) { ACE_TRACE ("ACE_Log_Msg::flags"); u_long result; - ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, *ACE_Log_Msg_Manager::get_lock (), 0)); + ACE_MT (ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, ace_mon, *ACE_Log_Msg_Manager::get_lock (), 0)); result = ACE_Log_Msg::flags_; return result; @@ -350,7 +350,7 @@ void ACE_Log_Msg::set_flags (u_long flgs) { ACE_TRACE ("ACE_Log_Msg::set_flags"); - ACE_MT (ACE_GUARD (ACE_Thread_Mutex, ace_mon, *ACE_Log_Msg_Manager::get_lock ())); + ACE_MT (ACE_GUARD (ACE_Recursive_Thread_Mutex, ace_mon, *ACE_Log_Msg_Manager::get_lock ())); ACE_SET_BITS (ACE_Log_Msg::flags_, flgs); } @@ -359,7 +359,7 @@ void ACE_Log_Msg::clr_flags (u_long flgs) { ACE_TRACE ("ACE_Log_Msg::clr_flags"); - ACE_MT (ACE_GUARD (ACE_Thread_Mutex, ace_mon, *ACE_Log_Msg_Manager::get_lock ())); + ACE_MT (ACE_GUARD (ACE_Recursive_Thread_Mutex, ace_mon, *ACE_Log_Msg_Manager::get_lock ())); ACE_CLR_BITS (ACE_Log_Msg::flags_, flgs); } @@ -426,7 +426,7 @@ ACE_Log_Msg::ACE_Log_Msg (void) { // ACE_TRACE ("ACE_Log_Msg::ACE_Log_Msg"); - ACE_MT (ACE_GUARD (ACE_Thread_Mutex, ace_mon, + ACE_MT (ACE_GUARD (ACE_Recursive_Thread_Mutex, ace_mon, *ACE_Log_Msg_Manager::get_lock ())); ++instance_count_; } @@ -441,7 +441,7 @@ ACE_Log_Msg::~ACE_Log_Msg (void) // If ACE_Log_Msg_Manager::close () is called, the lock will // be deleted. { - ACE_MT (ACE_GUARD (ACE_Thread_Mutex, ace_mon, + ACE_MT (ACE_GUARD (ACE_Recursive_Thread_Mutex, ace_mon, *ACE_Log_Msg_Manager::get_lock ())); instance_count = --instance_count_; } @@ -486,7 +486,7 @@ ACE_Log_Msg::open (const ASYS_TCHAR *prog_name, LPCTSTR logger_key) { ACE_TRACE ("ACE_Log_Msg::open"); - ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, *ACE_Log_Msg_Manager::get_lock (), -1)); + ACE_MT (ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, ace_mon, *ACE_Log_Msg_Manager::get_lock (), -1)); if (prog_name) { @@ -1046,7 +1046,7 @@ ACE_Log_Msg::log (ACE_Log_Record &log_record, #endif /* ACE_WIN32 */ // Make sure that the lock is held during all this. - ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, *ACE_Log_Msg_Manager::get_lock (), -1)); + ACE_MT (ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, ace_mon, *ACE_Log_Msg_Manager::get_lock (), -1)); if (ACE_BIT_ENABLED (ACE_Log_Msg::flags_, ACE_Log_Msg::STDERR) |