首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pthread_cond_signal和可能的线程匮乏

pthread_cond_signal和可能的线程匮乏
EN

Stack Overflow用户
提问于 2011-06-19 16:56:27
回答 3查看 698关注 0票数 2

如果多个线程等待一个条件变量,那么在pthread_cond_signal上唤醒的顺序是什么。我读到过pthread_cond_signal不一定是按照睡眠顺序醒来的。那么这可能会导致starvation...is不呢?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2011-06-19 16:58:53

这是由计划策略决定的,这应该是公平的。

如果线程不会因为调度而耗尽资源,那么它们也不应该因此而匮乏。

spec

如果在条件变量上阻塞了多个线程,则调度策略将确定线程解除阻塞的顺序。

票数 4
EN

Stack Overflow用户

发布于 2011-06-22 00:00:29

公平性得不到保证,所以饥饿总是有可能的。为了确保绝对公平,您需要实现自己的机制,使用队列来跟踪到达的顺序。

票数 1
EN

Stack Overflow用户

发布于 2011-08-30 21:23:22

这个问题表明滥用了条件变量。条件变量的用法是警告线程某个条件已经发生。当您只唤醒一个线程时,这一定是因为任何线程都可以服务于该条件。如果您关心哪个线程唤醒,那么并不是任何线程都可以服务于该条件。

虽然您可能会在大多数实现中得到您想要的东西,但可能有一种更好的方法来做您想要做的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6401474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档