wishel 发表于 2008-8-17 10:28:42

条件变量的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]
查看完整版本: 条件变量的broadcast()的一个问题