根据我的理解,任何原子指令(compare_and_swap、test_and_test、fetch_and_add)都作为一条指令执行。尽管它们涉及多个 CPU 周期/操作,但它对线程/进程是不可见的。如果一个线程正在执行任何此类原子指令,则不允许其他线程修改/访问此类原子指令中涉及的任何值(内存位置/寄存器)。
如果是这种情况,为什么在维基百科http://en.wikipedia.org/wiki/Compare-and-swap中指出,如果同时该值已被另一个线程更新,则写入将失败。?
当一个线程中的 compare_and_swap 指令正在进行时,其他线程如何更新值?