子性操作 & sync/atomic包 细说

code · · 447 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

package atomic

import "sync/atomic"

atomic包提供了底层的原子级内存操作,对于同步算法的实现很有用。

这些函数必须谨慎地保证正确使用。除了某些特殊的底层应用,使用通道或者sync包的函数/类型实现同步更好。

应通过通信来共享内存,而不通过共享内存实现通信

被SwapT系列函数实现的交换操作,在原子性上等价于:

old = *addr
*addr = new
return old
CompareAndSwapT系列函数实现的比较-交换操作,在原子性上等价于:
if *addr == old {
    *addr = new
    return true
}
return false
AddT 系列函数实现加法操作,在原子性上等价于:

*addr += delta
return *addr
LoadT和StoreT系列函数实现的加载和保持操作,在原子性上等价于:"return addr"和"addr = val"。

练习案例:

go 原子性操作

参考手册

https://studygolang.com/pkgdoc


有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:code

查看原文:子性操作 & sync/atomic包 细说

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

447 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传