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


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

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

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

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

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

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

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

 

 

 

 

 

  • 1
  • 2
  • 下一页

相关内容