有没有办法确定是否有任何线程正在等待给定的条件变量?

时间:2015-12-17 08:19:10

标签: c posix condition-variable

pthread_cond_destroy上的Posix页面说" 尝试销毁当前阻止其他线程的条件变量会导致未定义的行为。"

如果有任何线程真的在等待条件变量,怎么能确定?即使与条件变量关联的条件为真,也不一定意味着线程在条件变量上等待该条件。

因此,在调用pthread_cond_destroy时,如何确定是否需要唤醒线程?

1 个答案:

答案 0 :(得分:2)

您需要以某种方式构造代码,以便您知道使用cond变量的任何线程都没有,也不会在将来,因此您可以销毁它。

没有函数可以查询cond变量当前是否正在使用(或者是否有任何线程将在一秒或50秒内使用它)。