CAS

1. CAS算法具体内容是啥? 

在 CAS 中,有三个值:

V:要更新的变量(var)
E:预期值(expected)
N:新值(new)

先判断 V 是否等于 E,如果等于,将 V 的值设置为 N;如果不等,说明已经有其它线程更新了 V,当前线程就放弃更新。

2. CAS怎么保证数据原子性?

CPU 会发出一个 LOCK 指令进行总线锁定,阻止其他处理器对内存地址进行操作,直到当前指令执行完成。

3. 什么是 ABA 问题?

ABA 问题指的是,一个值原来是 A,后来被改为 B,再后来又被改回 A,这时 CAS 会误认为这个值没有发生变化。
可以使用版本号/时间戳的方式来解决 ABA 问题。 比如说,每次变量更新时,不仅更新变量的值,还更新一个版本号。CAS 操作时,不仅比较变量的值,还比较版本号。

4.
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务