go 原子函数

原子操作即是进行过程中不能被中断的操作。针对某个值的原子操作在被进行的过程中,CPU绝不会再去进行其他的针对该值的操作。 为了实现这样的严谨性,原子操作仅会由一个独立的CPU指令代表和完成。

atomic 常见的五种操作

  • 增减
  • 载入
  • 比较并交换
  • 交换
  • 存储

最常用应该是增减和载入了,可以理解为写和读。

func main() {
   var opts int64 = 0
   go func(){
          atomic.AddInt64(&opts, 3)
   }
   fmt.Println("opts: ", atomic.LoadInt64(&opts))
}

go run -race 不再出现资源竞争异常。 其他更多使用方式参考如下链接。

链接参考

Golang同步:原子操作使用
《GO并发编程实战》—— 原子操作
go 原子操作

Life is more than the present.