Golang atomic.StoreUint32() 函数及示例
在Go语言中,原子包提供了较低级别的原子内存,有助于实现同步算法。 在Go语言中, StoreUint32() 函数用于以原子方式将val存储到*addr中。这个函数是在原子包中定义的。 在这里,您需要导入“sync / atomic”包以使用这些函数。
语法:
func StoreUint32(addr *uint32, val uint32)
在这里,addr表示地址。
注意:(* uint32)是uint32值的指针。但是,int32包含从0到4294967295的所有无符号32位整数集。
返回值:将val存储到*addr中,可以在需要时返回。
栗子 1:
//演示在Golang中使用StoreUint32函数的程序
//包括主包
package main
//导入fmt和sync / atomic
import (
"fmt"
"sync/atomic"
)
// 主函数
func main() {
// 定义用于存储val的地址的变量
var (
x uint32
y uint32
)
// 使用StoreUint32方法
//及其参数
atomic.StoreUint32(&x, 465559)
atomic.StoreUint32(&y, 123)
// 显示val存储在地址中的值
fmt.Println(atomic.LoadUint32(&x))
fmt.Println(atomic.LoadUint32(&y))
}
输出:
465559
123
在这里,首先在定义的地址中存储了uint32值,然后使用上面的LoadUint32()方法返回它们。
栗子 2:
//演示在Golang中使用StoreUint32函数的程序
//包括主包
package main
//导入fmt和sync / atomic
import (
"fmt"
"sync/atomic"
)
// 主函数
func main() {
// 定义用于存储val的地址的变量
var (
x uint32
)
// 使用StoreUint32方法
//及其参数
atomic.StoreUint32(&x, 67677)
// 加载存储的val
z := atomic.LoadUint32(&x)
// 如果值相等则打印true,否则为false
fmt.Println(z == x)
// 如果地址相同则打印true,否则为false
fmt.Println(&z == &x)
}
输出:
true
false
在这里,存储和加载的值是相同的,因此返回true,但它们的地址不同,因此在那种情况下返回false。
极客教程