假设在同一CPU高速缓存行中存储了两个变量,如果我成功执行了CAS变量之一,是否会在CAS指令后立即更新整个高速缓存行?

最佳答案

是的,这是整个高速缓存行的全部内存屏障,无论您进行什么操作都会影响整个高速缓存行,但是,当您开始谈论与变量有关的高速缓存行时,您应该小心自己的期望。

换句话说,您可以执行原子操作,例如CAS,并且缓存行将立即更新。它是一个全内存屏障,因此任何待处理的内存操作都将在原子作用之前解决。它不会以任何方式影响变量,因为它们与高速缓存行无关,但是,如果以后通过CAS或内存操作获取该高速缓存行,则会看到先前的CAS操作的结果。

07-26 09:38