找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4026|回复: 0

条件变量的broadcast()的一个问题

[复制链接]
发表于 2008-8-17 10:28:42 | 显示全部楼层 |阅读模式
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,其它平台没有试过。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-3 17:37 , Processed in 0.021859 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表