为了账号安全,请及时绑定邮箱和手机立即绑定

为什么pthread_cond_wait有虚假的唤醒?

为什么pthread_cond_wait有虚假的唤醒?

C
Qyouu 2019-10-15 14:35:03
引用手册页:使用条件变量时,始终存在一个布尔谓词,其中涉及与每个条件等待相关联的共享变量,如果线程应该继续执行,则为true。从pthread_cond_timedwait()或pthread_cond_wait()函数可能会引起虚假的唤醒。由于pthread_cond_timedwait()或pthread_cond_wait()的返回并不暗示此谓词的值,因此应在返回时重新评估该谓词。因此,pthread_cond_wait即使您未发出信号也可以返回。至少乍一看,这似乎很残酷。这就像一个函数,它随机返回错误的值,或者在它真正到达正确的return语句之前随机返回。似乎是一个重大错误。但是他们选择在手册页中记录而不是修复它的事实似乎表明,有一个合理的原因导致pthread_cond_wait最终虚假地醒来。大概,它的工作方式具有内在的本质,使它无济于事。问题是什么。为什么会pthread_cond_wait虚假归还?为什么不能保证仅在正确发出信号后才能唤醒?谁能解释其伪造行为的原因?
查看完整描述

3 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

pthread_cond_signal中的“通过条件信号进行的多次唤醒”部分提供了pthread_cond_wait和pthread_cond_signal的示例实现,其中涉及虚假的唤醒。


查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 864 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信