Golang atomic.LoadUint32()函数及示例

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()方法在每次运行中返回随机值。所以,此处输出会返回随机值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程