package atomic
import "sync/atomic"
atomic包提供了底层的原子级内存操作,对于同步算法的实现很有用。
这些函数必须谨慎地保证正确使用。除了某些特殊的底层应用,使用通道或者sync包的函数/类型实现同步更好。
应通过通信来共享内存,而不通过共享内存实现通信。
相比于使用锁,在条件允许的情况下,使用原子操作的效率会更高
atomic包能对一些类型进行原子操作,包括int32, int64, uint32, uint64, uintptr, unsafe.Pointer六种类型。原子操作包括增或减、交换、比较并交换、载入、存储五种操作。
一、载入
载入包含以下六个函数,分别是对上述六种数据类型的操作。
func LoadInt32(addr *int32) (val int32) func LoadInt64(addr *int64) (val int64) func LoadUint32(addr *uint32) (val uint32) func LoadUint64(addr *uint64) (val uint64) func LoadUintptr(addr *uintptr) (val uintptr) func LoadPointer(addr *unsafe.Pointer) (va