信号量不能让进程休眠吗?一定要借助于等待队列??
LDD3中译第三版,113页 , 17行 .down也许会将调用者置于休眠状态,然后等待信号量可用
如果用多个进程来操作一个信号量保护的临界资源, 在什么情况下 ,将调用者置于休眠状态?
而未获得信号量的调用者不置为休眠状态, 这些调用者,如何运行? 要是一直查询的话那不信号量相当于spin_lock吗?
请大侠解答
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
“而未获得信号量的调用者不置为休眠状态”
这话是哪的?
down是要休眠的阿,不休眠的是down_trylock,它会立即返回通知程序试图获得锁失败,由程序决定下一步干什么。
谁获得信号量谁休眠的问题随便找本操作系统书看看p操作v操作就知道了
在等待临界资源有两种情况:1、睡眠等待(信号量、等待队列等);2、忙等待(自旋锁)
重新看那下书 .做那下如下总结:请大侠指正
1.单信号量一般用于临界区或者互斥资源管理.
2.信号量+等待队列, 用于多进程的生产消费类型的管理
3.自旋锁+等待队列, 用于中断方式的生产消费类型的管理
对吗?
其实说白了就是忙等待和睡眠等待,主要是要搞清楚机理。中断中只能忙等待,是因为在中断中不能睡眠。如果不能睡眠的,那就只能用自旋锁了。
这个解释 说得真白和简单阿