假设t1在与t2线程竞争中线程t1能去更新变量的值,而其他线程都失败。容易看出 CAS 操作是基于共享数据不会被修改的假设,采用了类似于数据库的commit-retry 的模式。而且CAS避免了请求操作系统来裁定锁的问题,不用麻烦操作系统,直接在CPU内部就搞定了。当 CPU 从内存中读取一个变量到它的寄存器中时,必须首先将包含了该变量的缓存线读取到 CPU 高速缓存。比如,如果 CPU0 在对一个变量执行“比较并交换”操作,而该变量所在的缓存线在 CPU7 的高速缓存中,就会发生以下经过简化的事件序列: