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

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

在Go语言中,atomic包提供了较低级别的原子内存,有助于实现同步算法。Go语言中的 LoadUintptr() 函数用于原子加载*addr。这个函数在原子包中定义。在这里,您需要导入“sync / atomic”包才能使用这些函数。

语法:

func LoadUintptr(addr *uintptr) (val uintptr)

在这里,addr表示地址。

注意:(*uintptr)是一个uintptr值的指针。uintptr是一个整数类型,它太大了,可以包含任何指针的位模式。

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

示例1:

//演示在Golang中使用LoadUintptr函数的程序
  
//包括主包
package main
  
//导入fmt和sync / atomic
import (
    "fmt"
    "sync/atomic"
)
  
//主要函数
func main() {
  
    //将值赋给uintptr
    var (
        i uintptr = 98
        j uintptr = 255
        k uintptr = 6576567667788
        l uintptr = 5
    )
  
    //使用参数调用LoadUintptr方法
    load_1 := atomic.LoadUintptr(&i)
    load_2 := atomic.LoadUintptr(&j)
    load_3 := atomic.LoadUintptr(&k)
    load_4 := atomic.LoadUintptr(&l)
  
    //显示在* addr中加载的uintptr值
    fmt.Println(load_1)
    fmt.Println(load_2)
    fmt.Println(load_3)
    fmt.Println(load_4)
} 

输出:

98
255
6576567667788
5

示例2:

//演示在Golang中使用LoadUintptr函数的程序
  
//包括主包
package main
  
//导入fmt和sync/atomic
import (
    "fmt"
    "sync/atomic"
)
  
//主要函数
func main() {
  
    //声明u
    var u uintptr
  
    //for循环
    for i := 1; i < 1000; i + = 1 {
  
        // AddUintptr方法的函数
        go func() {
            atomic.AddUintptr(&u, 9)
        }()
    }
  
    //打印加载的值地址
    fmt.Println(atomic.LoadUintptr(&u))
} 

输出:

1818  //每次运行都返回随机值

在上面的示例中,每次调用AddUintptr()方法都返回新值,直到循环停止,LoadUintptr()方法加载这些新的uintptr值。这些值存储在不同的地址中,可能是随机的,因此此处每次运行的LoadUintptr()方法输出都不同。因此,这里的输出将返回一个随机值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程