zoukankan      html  css  js  c++  java
  • CAS优缺点

    cas优点:如一描述在并发量不是很高时cas机制会提高效率。
    cas缺点:
    1、cpu开销大,在高并发下,许多线程,更新一变量,多次更新不成功,循环反复,给cpu带来大量压力。
    2、只是一个变量的原子性操作,不能保证代码块的原子性。
    3、ABA问题

    ABA问题:内存值V=100;
    threadA 将100,改为50;
    threadB 将100,改为50;
    threadC 将50,改为100;

    场景:小牛取款,由于机器不太好使,多点了几次全款操作。后台threadA和threadB工作,
    此时threadA操作成功(100->50),threadB阻塞。正好牛妈打款50元给小牛(50->100),
    threadC执行成功,之后threadB运行了,又改为(100->50)。
    牛气冲天,lz钱哪去了???

    如何解决aba问题:
    对内存中的值加个版本号,在比较的时候除了比较值还的比较版本号。

    java:AtomicStampedReference就是用版本号实现cas机制。

  • 相关阅读:
    判断一个数是否为素数的方法
    什么是算法?
    table 表格
    状态模式
    设计模式
    观察者模式
    async函数
    JS单线程和异步
    ES6 --- Promise
    浅析flex 布局
  • 原文地址:https://www.cnblogs.com/fengxf/p/10794177.html
Copyright © 2011-2022 走看看