先看看golang文档说明:
atomic包提供了底层的原子级内存操作
类型共有六种:int32, int64, uint32, uint64, uintptr, unsafe.Pinter
操作共五种:增减, 比较并交换, 载入, 存储,交换
func Main_atomic() {
var a int32
fmt.Println("a:",a)
//原子操作:加
new_a := atomic.AddInt32(&a, 3)
fmt.Printf("原子操作加 a:%d,\t new_a:%d",a,new_a)
//原子操作:减
new_a=atomic.AddInt32(&a,-1)
fmt.Printf("\n原子操作减 a:%d,\t new_a:%d\n",a,new_a)
//原子操作:比较并交换操作
var b int32
fmt.Println("b:",b)
result := atomic.CompareAndSwapInt32(&b, 0, 3) //如果old值(0)与b的值相同,则将new(3)赋值给b
fmt.Println("比较结果:",result,"\tb:",b)
}