免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2864 | 回复: 2
打印 上一主题 下一主题

关于线程控制。线程B等待,线程A因为某事件的发生唤醒B [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-25 09:38 |只看该作者 |倒序浏览
20可用积分
线程B处于等待状态。
在线程A中如果某事件发生,则唤醒B,否则,B继续等待

事件a发生,B被唤醒,正在处理中。
这时候事件b发生了。
未避免B处理完事件a后,进入等待状态
一般的做法是使用一个全局的count计数
用来记录事件发生的次数
而在线程B中判断当count等于0的时候才进入等待状态

除了这种使用全局的count计数的方法
还有没有其他办法了?

谢谢

论坛徽章:
0
2 [报告]
发表于 2007-01-25 10:15 |只看该作者
生产者,消费者问题。用信号量

论坛徽章:
0
3 [报告]
发表于 2007-01-25 10:46 |只看该作者
man了一下sem_wait函数,这个等待也是可以被 pthread_cond_signal唤醒的?

问题描述的时候漏了一些信息
线程B处理事件的结束标志,是要一个时间
如果超时了,就结束事件处理
如果没有超时,那么就等待到超时

也就是说,在线程B中
根据需要,判断是做pthread_cond_wait还是做pthread_cond_timedwait
当全部事件结束后,就wait
否则,如果需要等待超时,就timedwait

如果用信号量,我这里就要把pthread_cond_wait 换成 sem_wait了

感觉用信号量本质上还是count的计数。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP