📅  最后修改于: 2023-12-03 15:01:01.352000             🧑  作者: Mango
在 Golang 中,atomic 包提供了一系列用于原子操作的函数,其中 atomic.Store() 函数用于原子地将值存储到指定的内存地址中。
func Store(addr *uint32, val uint32)
该函数用于将 uint32 类型的值原子地存储到地址 addr 指向的内存地址中,并返回之前该地址中的值。该函数可用于实现无锁算法、同步数据访问等场景中。
package main
import (
"fmt"
"sync/atomic"
)
func main() {
var val uint32 = 1
fmt.Println("Before store:", val)
atomic.Store(&val, 2)
fmt.Println("After store:", val)
}
运行结果:
Before store: 1
After store: 2
在上述示例中,我们定义了一个 uint32 类型的变量 val,初始值为 1。然后使用 atomic.Store() 函数将变量 val 中的值原子地存储为 2,最终输出该变量的值为 2。
atomic.Store() 函数是 Golang 中实现原子操作的一种方式,能够有效地防止数据竞态,可用于实现无锁算法、同步数据访问等场景中。在使用时需要注意该函数适用的数据类型,以及并发访问时的竞态条件问题。