Golang atomic.LoadUint32()函数及示例
在Go语言中,atomic包提供了较低级别的原子内存,有利于实现同步算法。 Golang中的 LoadUint32() 函数用于以原子方式加载*addr。此函数在原子包中定义。在这里,您需要导入“sync / atomic”包才能使用这些函数。
语法:
func LoadUint32(addr *uint32) (val uint32)
在这里,addr表示地址。
注意:(* uint32)是指向uint32值的指针。但是,uint32包含从0到4294967295的所有无符号32位整数集。
返回值:它返回加载到*addr的值。
示例1:
//程序示例
//用Golang中的LoadUint32函数说明用法
//包括主要包
package main
//导入fmt和sync/atomic
import (
"fmt"
"sync/atomic"
)
//主要函数
func main() {
//给uint32分配值
var (
i uint32 = 57
j uint32 = 0
k uint32 = 444
l uint32 = 45646667
)
//调用LoadUint32方法
//带有其参数
load_1 := atomic.LoadUint32(&i)
load_2 := atomic.LoadUint32(&j)
load_3 := atomic.LoadUint32(&k)
load_4 := atomic.LoadUint32(&l)
//显示uint32值
//加载到*addr
fmt.Println(load_1)
fmt.Println(load_2)
fmt.Println(load_3)
fmt.Println(load_4)
}
输出:
57
0
444
45646667
示例2:
//程序示例
//用Golang中的LoadUint32函数说明用法
//包括主要包
package main
//导入fmt和sync/atomic
import (
"fmt"
"sync/atomic"
)
//主要函数
func main() {
//声明u
var u uint32
//循环
for i := 3; i < 315; i++ {
//AddUint32方法的函数
go func() {
atomic.AddUint32(&u, 2)
}()
}
//打印加载的值地址
fmt.Println(atomic.LoadUint32(&u))
}
输出:
498 //每次运行都会返回一个随机值
在上面的示例中,每次调用AddUint32()方法返回新值,直到循环停止,LoadUint32()方法加载这些新的uint32值。这些值存储在不同的地址中,可以是随机的,因此这里的LoadUint32()方法在每次运行中返回随机值。所以,此处输出会返回随机值。
极客教程