03 CAS原理

vvEcho 2024-01-20 14:08:36
Categories: Tags:

CAS为比较并交换,它的实现是用一个旧的预期的值和内存值进行比较,如果两个值相等,就用新的值替换内存值,并返回 true。否则,返回 false;
CAS 利用 CPU 指令保证了操作的原子性,以达到锁的效果,至于自旋呢,看字面意思也很明白,自己旋转,翻译成人话就是循环,一般是用一个无限循环实现。这样一来,一个无限循环中,执行一个 CAS 操作,当操作成功,返回 true 时,循环结束;当返回 false 时,接着执行循环,继续尝试 CAS 操作,直到返回true

总结
CAS 是一种原子操作,用于实现无锁更新,基于底层unsafe直接操作内存,不需要锁。
自旋锁基于 CAS 实现,是一种轻量级的锁机制。
自旋锁的轻量级体现在无上下文切换、低开销和适用于短时间等待。
自旋锁适用于锁竞争时间短、高并发和低延迟的场景。
尽管自旋锁是轻量级的,但它也有局限性,如ABA问题和自旋开销