pthread_cond_destroy上的Posix页面说" 尝试销毁当前阻止其他线程的条件变量会导致未定义的行为。"
如果有任何线程真的在等待条件变量,怎么能确定?即使与条件变量关联的条件为真,也不一定意味着线程在条件变量上等待该条件。
因此,在调用pthread_cond_destroy时,如何确定是否需要唤醒线程?
答案 0 :(得分:2)
您需要以某种方式构造代码,以便您知道使用cond变量的任何线程都没有,也不会在将来,因此您可以销毁它。
没有函数可以查询cond变量当前是否正在使用(或者是否有任何线程将在一秒或50秒内使用它)。