如果多个线程等待一个条件变量,那么在pthread_cond_signal上唤醒的顺序是什么。我读到过pthread_cond_signal不一定是按照睡眠顺序醒来的。那么这可能会导致starvation...is不呢?
谢谢
发布于 2011-06-19 16:58:53
发布于 2011-06-22 00:00:29
公平性得不到保证,所以饥饿总是有可能的。为了确保绝对公平,您需要实现自己的机制,使用队列来跟踪到达的顺序。
发布于 2011-08-30 21:23:22
这个问题表明滥用了条件变量。条件变量的用法是警告线程某个条件已经发生。当您只唤醒一个线程时,这一定是因为任何线程都可以服务于该条件。如果您关心哪个线程唤醒,那么并不是任何线程都可以服务于该条件。
虽然您可能会在大多数实现中得到您想要的东西,但可能有一种更好的方法来做您想要做的事情。
https://stackoverflow.com/questions/6401474
复制相似问题