pthread_cond_wait虚假唤醒

Posted qihualin-1024

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pthread_cond_wait虚假唤醒相关的知识,希望对你有一定的参考价值。

  pthread_cond_wait中的while()不仅仅在等待条件变量前检查条件cond_is_false是否成立,实际上在等待条件变量后也检查条件cond_is_false是否成立。在多线程等待的情况下,这样对condition进行多做一次判断,即可避免“虚假唤醒”。

pthread_mutex_lock(&mutex);

while(cond_is_false)

  pthread_cond_wait(&cond, &mutex);

pthread_mutex_unlock(&mutex);

以上是关于pthread_cond_wait虚假唤醒的主要内容,如果未能解决你的问题,请参考以下文章

在Linux驱动程序中,使用等待队列的作用?

Linux C语言 pthread_cond_wait()pthread_cond_timedwait()函数(不允许cond被唤醒时产生竞争,所以需要和互斥锁搭配)

JAVA线程虚假唤醒

互斥量和条件变量

Java多线程虚假唤醒问题(生产者和消费者关系)

《C++ 并发编程实战 第二版》:条件变量唤醒丢失与虚假唤醒