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"。
练习案例:
参考手册
https://studygolang.com/pkgdoc
有疑问加站长微信联系(非本文作者)