golang atomic包学习

//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并返回真

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值