Go 原子操作和锁的区别
原子操作由底层硬件支持,而锁是基于原子操作 + 信号量完成的。
若实现相同的功能,前者通常会更有效率原子操作是单个指令的互斥操作;互斥锁 / 读写锁是一种数据结构,可以完成临界区 (多个指令) 的互斥操作,扩大原子操作的范围。
原子操作是无锁操作,属于乐观锁;说起锁的时候,一般属于悲观锁。
原子操作存在于各个指令 / 语言层级,比如 “机器指令层级的原子操作”,“汇编指令层级的原子操作”,“Go 语言层级的原子操作” 等。
锁也存在于各个指令 / 语言层级中,比如 “机器指令层级的锁 “,” 汇编指令层级的锁 “,”Go 语言层级的锁 “等。
原子操作相关可以参考:原子操作