如果pthread_mutex_t,pthread_cond_t在pthread_cond_wait()仍处于活动状态时被销毁,会发生什么?

时间:2014-01-22 11:00:08

标签: pthreads

当我收到某些回复时,pthread_cond_wait()会被pthread_cond_signal()吵醒。但在某些情况下,我没有得到回复。因此,在这些情况下,当我简单地销毁pthread_mutex_tpthread_cond_t时,它似乎仍在无限循环中继续。

我不明白这是不是原因或其他原因。请帮帮我。

1 个答案:

答案 0 :(得分:3)

{m}被破坏后,pthread_cond_wait()的行为未定义。

不仅如此,在关联的互斥锁被锁定时,应调用pthread_cond_wait(), 否则函数的行为也是未定义的。

该函数还在互斥锁和条件变量之间建立动态绑定(当函数返回时,绑定也被释放)。因此,销毁条件变量也可能导致未定义的行为。

更多细节可以在这里找到: opengroup: pthread_cond_wait