📌  相关文章
📜  Golang 中的 atomic.LoadUint32()函数示例(1)

📅  最后修改于: 2023-12-03 15:01:01.350000             🧑  作者: Mango

Golang 中的 atomic.LoadUint32()函数示例

在 Golang 中,atomic.LoadUint32() 是一个原子操作函数,用于原子加载一位 32 位无符号整数。这个函数保证了在同时被多个 goroutine 访问时,读取的值是安全和正确的。

语法
func LoadUint32(addr *uint32) (val uint32)
参数

addr:一个指向无符号 32 位整数的指针。

返回值

val:被加载的无符号 32 位整数的值。

示例
package main

import (
    "fmt"
    "sync/atomic"
    "time"
)

func main() {
    var num uint32 = 0
    go increment(&num)
    go increment(&num)
    time.Sleep(time.Second)
    finalNum := atomic.LoadUint32(&num)
    fmt.Println("Final number:", finalNum)
}

func increment(num *uint32) {
    for i := 0; i < 100; i++ {
        atomic.AddUint32(num, 1)
    }
}

在这个示例中,我们定义了一个变量 num,它的初始值是 0。我们启动了两个 goroutine,每个 goroutine 会调用 increment() 函数 100 次,通过 atomic.AddUint32() 这个原子操作函数来增加 num 的值。

最后,我们通过调用 atomic.LoadUint32() 函数来加载最终的值,并将其打印到屏幕上。

参考链接