pthread_cond_signal()只发布一个线程?

时间:2013-08-22 21:28:46

标签: pthreads posix

pthread_cond_signal是否正好解锁一个线程?如果没有,它会释放多个线程的情况是什么?规范如下:

  

pthread_cond_signal()函数应至少解锁其中一个   在指定条件变量cond上阻塞的线程(如果   任何线程都被cond阻止了。

1 个答案:

答案 0 :(得分:3)

pthreads规范允许在实现中进行“虚假唤醒”。例如,请参阅pthread_cond_signalpthread_cond_wait sketched in the specification的假设实现,它允许这种情况。

虚假唤醒的可能性是为什么总是将一个谓词与一个条件相关联,并在唤醒时检查该谓词。