如果有多个线程在条件变量上等待,那么在pthread_cond_signal上唤醒的顺序是什么。我已经读过pthread_cond_signal不一定会按照睡眠的顺序醒来。所以这可能导致饥饿......不是吗?
由于
答案 0 :(得分:4)
答案 1 :(得分:1)
不保证公平,所以饥饿永远是可能的。 为确保绝对公平,您需要使用队列实现自己的机制,以跟踪到达的顺序。
答案 2 :(得分:0)
这个问题建议滥用条件变量。条件变量的使用是警告线程已发生条件。当您只唤醒一个线程时,必须是因为任何线程可以为该条件提供服务。如果您关心哪个线程唤醒,那么任何线程都不能为该条件提供服务。
虽然在大多数实现中你可能会得到你想要的东西,但是你可能有更好的方法去做你想做的事情。