zoukankan      html  css  js  c++  java
  • CAS

    CAS通过调用JNI的代码实现的。JNI:Java Native Interface为JAVA本地调用,允许java调用其他语言。
    
    而compareAndSwapInt就是借助C来调用CPU底层指令实现的。下面从分析比较常用的CPU(intel x86)来解释CAS的实现原理。
    
    下面是sun.misc.Unsafe类的compareAndSwapInt()方法的源代码:
    public final native boolean compareAndSwapInt(Object o, long offset,
                                                  int expected,
                                                  int x);

    • 执行函数:CAS (V, E ,N)
      • V表示要更新的变量
      • E表示预期值
      • N表示新值
    • 如果V值等于E值,则将V的值设为N。若V值和E值不同,则说明已经有其他线程做了更新,则当前线程要么什么都不做,要么循环检测V与E是否一致
  • 相关阅读:
    POJ 2154
    POJ 1286
    Polycarp's problems
    Greedy Change
    Goods transportation
    Ugly Problem
    Happy Matt Friends
    Dense Subsequence
    Ray Tracing
    Batch Sort
  • 原文地址:https://www.cnblogs.com/pickKnow/p/11557660.html
Copyright © 2011-2022 走看看