linux原子加锁中关于SMP的困惑

本文深入探讨了Linux加锁指令的原子性及其在多CPU环境下的并发问题,解释了通过锁定数据总线来降低并发可能性的方法,并讨论了晶振同步对于避免真正并发的影响。文章最终指出,即使在看似并发的原子操作下,也可能存在竞态风险。

     接触到linux加锁内容时,其中一文说加锁指令为单条指令,原子执行就不会存在竞争问题。比较困惑,假设两条原子指令在两个CPU上同时执行,难道就不会发生竞态问题?

下面链接的文章中提到LOCK数据,阻止别的CPU访问数据总线

http://software.intel.com/zh-cn/blogs/2010/01/14/cpucpu/

使用LOCK总线的方法确实又降低了并发的可能。

但是假设两条锁数据总线的原子操作指令确实是真真的并发执行的话,那么是否会出现所有的CPU的#HLOCK pin同时电位拉低情况?若如此,所有CPU都不能访问数据总线,结果会如何?

如果多个CPU使用的同一个晶振呢?

降低多CPU并发可能性方法还有就是每一个不同的CPU使用独立的晶振,晶振频率相同但是起震不同步,也许只有这样才可能杜绝真的并发产生。但是不同的晶振又能保证其频率一定是一样的么?就算频率真的是一样的,又真能保证不同晶振起震时间是交叉的么?

不解,也许我那哥们每天从几千万条数据中寻找数据库重复主键的原因就在于没有真的锁,只有并发可能性最小的锁吧!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值