summaryrefslogtreecommitdiff
path: root/ace/Thread_Manager.i
diff options
context:
space:
mode:
authornanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-09-19 05:09:03 +0000
committernanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-09-19 05:09:03 +0000
commit08a1c9de79ff14fb2348b03509176047bff85f3c (patch)
tree71c4367c3ab07d426e7c03387daf8ce1dd3eec41 /ace/Thread_Manager.i
parentbf64db847647e6555d3868573c1cc1af09a44931 (diff)
downloadATCD-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.i62
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;
+}