Golang atomic.StoreUint32() 函数及示例

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。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程