首页 > 解决方案 > 等待条件变量的线程是否可以被在等待之前发出的信号唤醒

问题描述

t等待条件变量的线程是否有可能在等待之前被另一个线程(实际上可能在哪里)发出信号cond唤醒?t't'tt

我已经尝试制作一个 C 程序来执行此操作 1000 次,但它从未发生过,我也阅读了有关信号和等待的手册页,但我找不到答案。

这是一个在单个线程上可能看起来的示例

pthread_cond_signal(&cond);
pthread_cond_wait(&cond, &mutex); //Is there a chance that this wait gets cancelled by the signal above

谢谢你的帮助!

标签: cmultithreadingpthreadsconditional

解决方案


等待条件变量的线程能否被在等待之前发出的信号唤醒。

它不能。但是,它可以被虚假的唤醒唤醒,人们不会知道其中的区别。

等待代码必须等待共享状态的变化,条件变量唤醒提示共享状态可能已经改变,必须重新评估。


推荐阅读