最近在使用 pthread condition variable 的时候出现了问题,经过排查发现是 pthread_cond_signal()
放在了 pthread_mutex_unlock()
之后调用导致的。本来不是个什么复杂的问题,但是由于自己一直以来的忽略,觉得有必要记录一下。
先来看下很多文章中都用到的关于 pthread_cond_
系列函数的例子:
/* ----- producer ----- */
pthread_mutex_lock(&mutex); /* 1 */
queue.push(item); /* 2 */
pthread_cond_signal(&cond); /* 3 */
pthread_mutex_unlock(&mutex); /* 4 */
/* ----- consumer ----- */
pthread_mutex_lock(&mutex); /*
… 阅读全文…