无锁方案,在竞争冲突不大的情况下比锁性能会高不少。对应JAVA中各种的Atmoic类。实现原理是硬件的支持,CPU提供了原子化的支持即CAS(Compare And Swap)指令。CAS包含3个字段:共享变量的内存地址A;用于比较值B和共享变量的新值C。只有A的值等于B才允许更新成C。作为一条CPU指令其本身就是原子性的。很类似乐观锁的原理。JAVA在实现是是通过自旋来解决的如下伪代码:
1 | public void add10K() { |
java中是通过sun.misc.Unsafe来实现的