summaryrefslogtreecommitdiff
path: root/ace/Thread_Manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Thread_Manager.cpp')
-rw-r--r--ace/Thread_Manager.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/ace/Thread_Manager.cpp b/ace/Thread_Manager.cpp
index a9578efc99b..0dacdf7bc55 100644
--- a/ace/Thread_Manager.cpp
+++ b/ace/Thread_Manager.cpp
@@ -113,7 +113,7 @@ void
ACE_Thread_Descriptor::do_at_exit ()
{
- ACE_TRACE ("ACE_Thread_Descriptor::do_at_exit");
+ ACE_TRACE ("ACE_Thread_Descriptor::at_exit");
while (at_exit_list_!=0)
this->at_pop ();
}
@@ -952,6 +952,20 @@ ACE_Thread_Manager::join_thr (ACE_Thread_Descriptor *td, int)
return ACE_Thread::join (td->thr_handle_);
#else
int result = ACE_Thread::join (td->thr_handle_);
+
+# if defined (ACE_HAS_PTHREADS_DRAFT4) && defined (ACE_LACKS_SETDETACH)
+# if defined (HPUX_10)
+ // HP-UX DCE threads' pthread_detach will smash thr_id if it's just given
+ // as an argument. Since the id is still needed, give pthread_detach
+ // a junker to scribble on.
+ ACE_thread_t junker;
+ cma_handle_assign(&td->thr_handle_, &junker);
+ ::pthread_detach (&junker);
+# else
+ ::pthread_detach (&td->thr_handle_);
+# endif /* HPUX_10 */
+# endif /* ACE_HAS_PTHREADS_DRAFT4 && ACE_LACKS_SETDETACH */
+
if (result != 0)
{
// Since the thread are being joined, we should
@@ -1293,7 +1307,7 @@ ACE_Thread_Manager::kill_grp (int grp_id, int signum)
int
ACE_Thread_Manager::cancel_grp (int grp_id, int async_cancel)
{
- ACE_TRACE ("ACE_Thread_Manager::cancel_grp");
+ ACE_TRACE ("ACE_Thread_Manager::resume_grp");
return this->apply_grp (grp_id,
ACE_THR_MEMBER_FUNC (&ACE_Thread_Manager::cancel_thr),
async_cancel);
@@ -2146,7 +2160,7 @@ ACE_Thread_Manager::hthread_grp_list (int grp_id,
ACE_hthread_t hthread_list[],
size_t n)
{
- ACE_TRACE ("ACE_Thread_Manager::hthread_grp_list");
+ ACE_TRACE ("ACE_Thread_Manager::hthread_list");
ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1));
size_t hthread_count = 0;