Golang atomic.LoadInt32() 函数及其示例

Golang atomic.LoadInt32() 函数及其示例

Go 语言的原子(atomic)包提供了更低级别的原子内存,便于实现同步算法。该语言中的 LoadInt32() 函数用于原子性地加载 *addr 值。该函数在原子包中定义,因此您需要导入 “sync/atomic” 包才能使用这些功能。

语法:

func LoadInt32(addr *int32) (val int32)
Go

注意:(*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)
        } 
Go

输出:

57567
-842
17
3455
Go

示例 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))
        } 
Go

输出:

1416   // 每次运行中都返回一个随机值
Go

在上面的示例中,每次调用 AddInt32() 方法都返回新值,LoadInt32() 方法加载这些新的 int32 值。这些值存储在不同的地址中,因此输出中 LoadInt32() 方法的值是随机的。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册