参考链接

sync/atomic - 原子操作

Overview

Package atomic提供了用于实现同步算法的低级原子内存原语。

正确使用这些函数需要非常小心。除了特殊的、低级的应用程序外,同步最好使用通道或同步包的工具来完成。通过通信共享内存;不要通过共享内存来通信。

交换操作,由SwapT函数实现,是原子等价的 :

  1. old = *addr
  2. *addr = new
  3. return old

比较和交换操作,由CompareAndSwapT函数实现,是原子等价的 :

  1. if *addr == old {
  2. *addr = new
  3. return true
  4. }
  5. return false

由AddT函数实现的add操作是原子等价的 :

  1. *addr += delta
  2. return *addr

加载和存储操作,由LoadT和StoreT函数实现,是原子等价的”return addr”和”addr = val”。