可以在信号量上执行的 P() 和 V() 操作是否保证原子操作?信号量可以防止两个进程进入 P() 吗?
假设我们有一个二进制信号量 s,其值为 1,并且两个进程同时尝试在 s 上执行 P。这些操作中只有一个能够在 s 上的下一个 V 操作之前完成;尝试执行 P 操作的另一个进程被挂起。
摘自我的大学笔记:
我们可以认为如果P和V作为控制
访问资源:
当一个进程想要使用
资源,它执行P操作:
如果成功,它会减少
可用资源量和
过程继续;如果所有的
资源当前正在使用中,
进程必须等待。
当一个进程完成时
资源,它执行V操作:
如果有进程在等待
资源,其中之一被唤醒;
如果没有等待进程,
信号量增加
表明现在有更多的
资源免费。请注意,
V 的定义没有指定哪个
如果有多个进程被唤醒
同一进程已被暂停
信号。
信号量可以解决互斥和条件同步问题。所以你的两个问题的答案都是:是的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)