diff options
author | nanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-09-19 05:09:03 +0000 |
---|---|---|
committer | nanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-09-19 05:09:03 +0000 |
commit | 08a1c9de79ff14fb2348b03509176047bff85f3c (patch) | |
tree | 71c4367c3ab07d426e7c03387daf8ce1dd3eec41 /ace/Thread_Manager.i | |
parent | bf64db847647e6555d3868573c1cc1af09a44931 (diff) | |
download | ATCD-08a1c9de79ff14fb2348b03509176047bff85f3c.tar.gz |
Added ACE_Thread_Manager::join and other improvements/bug fixes
Diffstat (limited to 'ace/Thread_Manager.i')
-rw-r--r-- | ace/Thread_Manager.i | 62 |
1 files changed, 37 insertions, 25 deletions
diff --git a/ace/Thread_Manager.i b/ace/Thread_Manager.i index f4e6e167844..e8effcc81eb 100644 --- a/ace/Thread_Manager.i +++ b/ace/Thread_Manager.i @@ -93,7 +93,10 @@ ACE_At_Thread_Exit_Func::apply() ACE_INLINE ACE_Thread_Descriptor_Base::ACE_Thread_Descriptor_Base (void) : thr_id_ (ACE_OS::NULL_thread), - thr_handle_ (ACE_OS::NULL_hthread) + thr_handle_ (ACE_OS::NULL_hthread), + grp_id_ (0), + thr_state_ (ACE_THR_IDLE), + task_ (0) { } @@ -115,47 +118,47 @@ ACE_Thread_Descriptor_Base::operator!=(const ACE_Thread_Descriptor_Base &rhs) co return !(*this == rhs); } -// Unique thread id. -ACE_INLINE ACE_thread_t -ACE_Thread_Descriptor::self (void) -{ - ACE_TRACE ("ACE_Thread_Descriptor::self"); - return this->thr_id_; -} - ACE_INLINE ACE_Task_Base * -ACE_Thread_Descriptor::task (void) +ACE_Thread_Descriptor_Base::task (void) { - ACE_TRACE ("ACE_Thread_Descriptor::task"); + ACE_TRACE ("ACE_Thread_Descriptor_Base::task"); return this->task_; } -// Unique kernel-level thread handle. - -ACE_INLINE void -ACE_Thread_Descriptor::self (ACE_hthread_t &handle) -{ - ACE_TRACE ("ACE_Thread_Descriptor::self"); - handle = this->thr_handle_; -} - // Group ID. ACE_INLINE int -ACE_Thread_Descriptor::grp_id (void) +ACE_Thread_Descriptor_Base::grp_id (void) { - ACE_TRACE ("ACE_Thread_Descriptor::grp_id"); + ACE_TRACE ("ACE_Thread_Descriptor_Base::grp_id"); return grp_id_; } // Current state of the thread. ACE_INLINE ACE_Thread_State -ACE_Thread_Descriptor::state (void) +ACE_Thread_Descriptor_Base::state (void) { - ACE_TRACE ("ACE_Thread_Descriptor::state"); + ACE_TRACE ("ACE_Thread_Descriptor_Base::state"); return thr_state_; } +// Unique thread id. +ACE_INLINE ACE_thread_t +ACE_Thread_Descriptor::self (void) +{ + ACE_TRACE ("ACE_Thread_Descriptor::self"); + return this->thr_id_; +} + +// Unique kernel-level thread handle. + +ACE_INLINE void +ACE_Thread_Descriptor::self (ACE_hthread_t &handle) +{ + ACE_TRACE ("ACE_Thread_Descriptor::self"); + handle = this->thr_handle_; +} + // Get the thread creation ACE_INLINE long ACE_Thread_Descriptor::flags (void) const @@ -186,7 +189,7 @@ ACE_INLINE ACE_Thread_Descriptor * ACE_Thread_Descriptor::get_next (void) { ACE_TRACE ("ACE_Thread_Descriptor::flag"); - return this->next_; + return ACE_dynamic_cast (ACE_Thread_Descriptor *, this->next_); } // Set the exit status. @@ -292,3 +295,12 @@ ACE_Thread_Manager::wait_on_exit (void) { return this->automatic_wait_; } + +ACE_INLINE int +ACE_Thread_Manager::register_as_terminated (ACE_Thread_Descriptor *td) +{ + ACE_Thread_Descriptor_Base *tdb; + ACE_NEW_RETURN (tdb, ACE_Thread_Descriptor_Base (*td), -1); + this->terminated_thr_list_.insert_tail (tdb); + return 0; +} |