diff options
Diffstat (limited to 'ace/Thread_Manager.cpp')
-rw-r--r-- | ace/Thread_Manager.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/ace/Thread_Manager.cpp b/ace/Thread_Manager.cpp index 852e54ea065..46e925777fe 100644 --- a/ace/Thread_Manager.cpp +++ b/ace/Thread_Manager.cpp @@ -319,6 +319,7 @@ int ACE_Thread_Manager::thr_self (ACE_hthread_t &self) { ACE_TRACE ("ACE_Thread_Manager::thr_self"); + ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1)); ACE_Thread_Descriptor *desc = this->thread_desc_self (); @@ -1471,6 +1472,36 @@ ACE_Thread_Manager::wait_grp (int grp_id) return result; } +#if !defined(ACE_USE_ONE_SHOT_AT_THREAD_EXIT) +int +ACE_Thread_Manager::at_exit (ACE_At_Thread_Exit* at) +{ + ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, 0)); + + return this->thread_desc_self ()->at_exit (at); +} + +int +ACE_Thread_Manager::at_exit (ACE_At_Thread_Exit& at) +{ + ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, 0)); + + return this->thread_desc_self ()->at_exit (at); +} +#endif /* !ACE_USE_ONE_SHOT_AT_THREAD_EXIT */ + +int +ACE_Thread_Manager::at_exit (void *object, + ACE_CLEANUP_FUNC cleanup_hook, + void *param) +{ + ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, 0)); + + return this->thread_desc_self ()->at_exit (object, + cleanup_hook, + param); +} + // Must be called when thread goes out of scope to clean up its table // slot. |