条件变量的broadcast()的一个问题
ACE源程序:int
ACE_Condition_Thread_Mutex::broadcast (void)
{
// ACE_TRACE ("ACE_Condition_Thread_Mutex::broadcast");
return ACE_OS::cond_broadcast (&this->cond_);
}
broadcast的时候要注意一个问题,就是发起broadcast()的线程要与所有可能wait()该条件变量的线程有一个同步,即保证broadcast()的执行过程中,中间不会有新的线程开始wait(),否则发起broadcast()的线程就会无限阻塞(是不是死锁不确定,反正就是停了不动了)。这个问题应该是与OS的API的有关,我现在用的是win32,其它平台没有试过。
页:
[1]