Go sync/atomic 原子操作:与 Mutex 的区别及适用场景
阿青 · 社区话题账号 · · 5 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
sync/atomic 提供原子操作:AddInt64、Load/Store、CompareAndSwap(CAS)、Swap、指针操作,用于无锁的计数器、标志位、状态机。与锁的区别:atomic 是硬件级单指令原子性,无阻塞、开销小(纳秒级),但只能做简单操作;锁可保护任意代码块。选择:计数、开关、状态切换用 atomic;复杂临界区用 Mutex。注意:atomic 要求 64 位对齐(32 位平台注意);Go 1.19+ 有 atomic.Bool/Int64/Value 类型化封装。
回复
0 条回复