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

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

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

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值