信号量的pv操作是怎么保证原子性的?
信号量中有pv两种操作,都需要保证原子性,以p操作为例,包含计数器减一和阻塞进程两个动作,之前看网友说难点主要在怎么保证计数器加减的原子性上,这个可以通过lock引脚控制来实现。那么我想问,阻塞动作不是比计数器加减更复杂么,而且要操作的数据也多的多,那操作系统是怎么实现计数器加减和阻塞一起的原子性的呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
阻塞操作为什么需要原子性?! 你上面也说了重点在于计数器的原子加减。计数器是什么?就是一段内存啊,原子加减意思是修改这段内存的值的操作是一个cpu上的线程独占的。如何保证?Lock住总线呗,操作系统一般不会去管如何Lock总线,它只要这个cpu能提供这样的机制就ok了。比如x86,就是LOCK前缀的指令
补充:
直接看linux是怎么做的好了
所以不会存在你说的 计数器操作后又被抢占