📄️ 什么是CAS?有哪些使用场景?
CAS (Compare And Swap)即比较并交换,我们假设现在某个变量 V 的值为 A,现在我们打算将其更新为 B,那么 CAS 就描述了这样一个原子性的动作:从指定内存地址获取变量 V 的旧值;检查旧值 V 是否等于预期值 A;如果等于,则将旧值 V 替换为新值 B。
📄️ 如何解决CAS的ABA问题?
假如有线程 1 要将一个变量从 A 修改为 B,而在此之前,有另一个线程 2 先将其 A 先改成了 C 最后又改回了 A,此时对于线程 1 来说,变量依然还是预期值 A,因此可以顺利完成 CAS,这就是 ABA 问题。