2

pthread_cond_signal 是否只取消阻塞一个线程?如果不是,它会释放多个线程是什么情况?规范说如下:

pthread_cond_signal() 函数应至少解除阻塞在指定条件变量 cond 上阻塞的线程之一(如果任何线程在 cond 上阻塞)。

4

1 回答 1

3

pthreads 规范允许在实现中使用“虚假唤醒”。例如,参见规范中的假设实现pthread_cond_signalpthread_cond_wait 草图,它只允许这种情况。

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

于 2013-08-22T21:44:56.327 回答