Golang atomic.LoadInt32() 函数及其示例
Go 语言的原子(atomic)包提供了更低级别的原子内存,便于实现同步算法。该语言中的 LoadInt32() 函数用于原子性地加载 *addr 值。该函数在原子包中定义,因此您需要导入 “sync/atomic” 包才能使用这些功能。
语法:
func LoadInt32(addr *int32) (val int32)
注意:(*int32) 是指向 int32 值的指针。但是,int32 包含从 -2147483648 到 2147483647 的所有带符号的 32 位整数的集合。
返回值:它返回加载到 addr 的值。
示例 1:
// 演示 Golang 中的 LoadInt32 函数的用法
// 包含 main 包
package main
// 导入 fmt 和 sync/atomic
import (
"fmt"
"sync/atomic"
)
// 主函数
func main() {
// 为 int32 赋值
var (
i int32 = 57567
j int32 = -842
k int32 = 17
l int32 = 3455
)
// 调用 LoadInt32 方法
// 使用它的参数
load_1 := atomic.LoadInt32(&i)
load_2 := atomic.LoadInt32(&j)
load_3 := atomic.LoadInt32(&k)
load_4 := atomic.LoadInt32(&l)
// 显示加载到 *addr 的 int32 值
fmt.Println(load_1)
fmt.Println(load_2)
fmt.Println(load_3)
fmt.Println(load_4)
}
输出:
57567
-842
17
3455
示例 2:
// 演示 Golang 中的 LoadInt32 函数的用法
// 包含 main 包
package main
// 导入 fmt 和 sync/atomic
import (
"fmt"
"sync/atomic"
)
// 主函数
func main() {
// 声明 x
var x int32
// For 循环
for i := 1; i < 789; i += 2 {
// AddInt32 方法的函数
go func() {
atomic.AddInt32(&x, 4)
}()
}
// 打印加载值地址
fmt.Println(atomic.LoadInt32(&x))
}
输出:
1416 // 每次运行中都返回一个随机值
在上面的示例中,每次调用 AddInt32() 方法都返回新值,LoadInt32() 方法加载这些新的 int32 值。这些值存储在不同的地址中,因此输出中 LoadInt32() 方法的值是随机的。