Golang atomic.StoreUint64()函数及示例
在Go语言中,atomic包提供了更低级别的原子内存,这对于实现同步算法非常有用。在 Go 语言中, StoreUint64() 函数用于原子地将 val 存储到 *addr 中。该函数在 atomic 包中定义,您需要导入“sync/atomic”包以使用这些函数。
语法:
func StoreUint64(addr *uint64, val uint64)
这里,addr 表示地址。
注意: (*uint64) 是指向 uint64 值的指针。而 uint64 是位大小为 64 的整数类型。但是,int64 包含从 0 到 18446744073709551615 的所有无符号 64 位整数的集合。
返回值: 它将 val 存储到 *addr 中,然后在需要时可以返回它。
示例1:
// 演示 Golang 中 StoreUint64 函数的用法
// 包含 main 包
package main
// 导入 fmt 和 sync/atomic
import (
"fmt"
"sync/atomic"
)
// 主函数
func main() {
// 定义变量用于存储 val 的地址
var (
x uint64
y uint64
)
// 使用 StoreUint64 方法和其参数
atomic.StoreUint64(&x, 56576656555555)
atomic.StoreUint64(&y, 0)
// 显示存储在 addr 中的值
fmt.Println(atomic.LoadUint64(&x))
fmt.Println(atomic.LoadUint64(&y))
}
输出:
56576656555555
0
在此示例中,首先定义了 uint64 值的地址,然后使用上面的 LoadUint64() 方法将它们返回。
示例2:
// 演示 Golang 中 StoreUint64 函数的用法
// 包含 main 包
package main
// 导入 fmt 和 sync/atomic
import (
"fmt"
"sync/atomic"
)
// 主函数
func main() {
// 定义变量用于存储 val 的地址
var (
x uint64
)
// 使用 StoreUint64 方法和其参数
atomic.StoreUint64(&x, 111776540544)
// 加载存储的 val
z := atomic.LoadUint64(&x)
// 如果值相同则返回 true,否则返回 false
fmt.Println(z == x)
// 如果地址相同则返回 true,否则返回 false
fmt.Println(&z == &x)
}
输出:
true
false
在此示例中,存储和加载的值相同,因此返回 true,但它们的地址不相同,因此在这种情况下返回 false。
极客教程