pthread_cond_signal是否正好解锁一个线程?如果没有,它会释放多个线程的情况是什么?规范如下:
pthread_cond_signal()函数应至少解锁其中一个 在指定条件变量cond上阻塞的线程(如果 任何线程都被cond阻止了。
答案 0 :(得分:3)
pthreads规范允许在实现中进行“虚假唤醒”。例如,请参阅pthread_cond_signal
和pthread_cond_wait
sketched in the specification的假设实现,它允许这种情况。
虚假唤醒的可能性是为什么总是将一个谓词与一个条件相关联,并在唤醒时检查该谓词。