|
楼主 |
发表于 2009-9-22 09:01:10
|
显示全部楼层
我把ACEd.pdb放到Debug目录下就可以跟进去了,谢谢winston
跟进去以后我发现执行t到hr_mgr()->testsuspend()这个函数体中的check_state()函数时,这里面有个申请守卫
ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1));的语句,
再继续跟进到
ACE_Guard<ACE_LOCK>::tryacquire (void)
{
return this->owner_ = this->lock_->tryacquire ();
}
再继续跟进到
ACE_INLINE int
ACE_Thread_Mutex::acquire (void)
{
// ACE_TRACE ("ACE_Thread_Mutex::acquire");
return ACE_OS::thread_mutex_lock (&this->lock_);
}
最后在
ACE_INLINE int
ACE_OS::thread_mutex_lock (ACE_thread_mutex_t *m)
{
// ACE_OS_TRACE ("ACE_OS::thread_mutex_lock");
#if defined (ACE_HAS_THREADS)
# if defined (ACE_HAS_WTHREADS)
::EnterCriticalSection (m);
return 0;
# else
return ACE_OS::mutex_lock (m);
# endif /* ACE_HAS_WTHREADS */
#else
ACE_UNUSED_ARG (m);
ACE_NOTSUP_RETURN (-1);
#endif /* ACE_HAS_THREADS */
}
在其中的EnterCriticalSection (m);处不在运行阻塞了
是不是形成了死锁? |
|