//atomic
//import sync/atomic
/*
atomic包提供了底层的原子级内存操作
对于同步算法的实现很有用
这些函数必须谨慎地保证正确使用
除了某些特殊的底层应用 使用通道或者sync包的函数类型 实现同步更好
应该通过通信来共享内存 而不是通过共享内存实现通信
*/
old = *addr
*addr = new
return old
if *addr == old {
*addr = new
return true
}
return false
*addr += delta
return *addr
//Load32原子性的获取*addr的值
func LoadInt32(addr *int32)(val int32)
func LoadInt64(addr *int64)(val int64)
func LoadUint32(addr *uint32)(val uint32)
func LoadUint64(add* uint64)(val uint64)
func StoreInt32(addr *int32, val int32)
func StoreInt64(addr *int64, val int64)
func AddInt32(addr *int32, delta int32)(new int32)
func AddInt64(addr *int64, delta int64)(new int64)
func SwapInt32(addr* int32, new int32)(old int32)
func CompareAndSwapInt32(addr *int32,old, new int32)(swapp bool)
//原子性的比较*addr和old 如果相同则将new赋值给*addr并返回真