知识卡片

原子操作的本质与CAS

专业/工作 · 1107

内容

原子操作意味着不可再分——多个线程执行同一操作时,要么某个线程完整做完,要么什么都没做,不存在被切成一半的中间状态。多核时代,即使一条看似简单的递减指令也会被拆成”读-改-写”三步,多核同时操作同一内存就可能出错,x86提供LOCK前缀锁总线、以及现代处理器更常用的锁缓存一致性协议两条路径来保证原子性。CMPXCHG(比较并交换,CAS)是这套机制里最重要的单指令原语——先比较内存值是否还是期望旧值,没变才替换成新值,这正是几乎所有无锁数据结构的地基。

参考来源

《深入浅出DPDK》第4章《同步互斥机制》