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.
在 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.
全部评论
相关推荐
格力公司福利 666人发布
查看12道真题和解析