Golang atomic.LoadUint64() 函数及示例

Golang atomic.LoadUint64() 函数及示例

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

语法:

func LoadUint64(addr *uint64) (val uint64)

在这里,addr 表示地址。

注意:(*uint64) 是 uint64 值的指针。但是,uint64 包含所有从 0 到 18446744073709551615 的无符号 64 位整数的集合。

返回值:它返回加载到 *addr 的值。

示例 1:

// 展示了如何使用 Golang 中的 LoadUint64 函数的程序

// 包括主包
package main

// 导入 fmt 和 sync/atomic
import (
    "fmt"
    "sync/atomic"
)
  
// 主函数
func main() {
  
    // 分配值给 uint64
    var (
        i uint64 = 587786787
        j uint64 = 9
        k uint64 = 78678844556666
        l uint64 = 3446
    )
  
    // 调用 LoadUint64 方法
    // 与其参数
    load_1 := atomic.LoadUint64(&i)
    load_2 := atomic.LoadUint64(&j)
    load_3 := atomic.LoadUint64(&k)
    load_4 := atomic.LoadUint64(&l)
  
    // 显示 *addr 中加载的 uint64 值
    fmt.Println(load_1)
    fmt.Println(load_2)
    fmt.Println(load_3)
    fmt.Println(load_4)
} 

输出:

587786787
9
78678844556666
3446

示例 2:

// 展示了如何使用 Golang 中的 LoadUint64 函数的程序

// 包括主包
package main

// 导入 fmt 和 sync/atomic
import (
    "fmt"
    "sync/atomic"
)
  
// 主函数
func main() {
  
    // 声明 u
    var u uint64
  
    // 循环
    for i := 4; i < 200; i += 1 {
  
        // 使用 AddUint64 方法的函数
        go func() {
            atomic.AddUint64(&u, 6)
        }()
    }
  
    // 打印加载值的地址
    fmt.Println(atomic.LoadUint64(&u))
} 

输出:

1068    // 每次运行都会返回一个随机值

在上面的示例中,每次调用 AddUint64() 方法都会返回新的值,直到循环停止,LoadUint64() 方法加载这些新的 uint64 值。这些值存储在不同的地址中,这可能是随机的,因此,此处每次运行 LoadUint32() 方法的输出都不同。因此,输出中返回了随机值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程