📅  最后修改于: 2023-12-03 15:01:01.350000             🧑  作者: Mango
在 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()
函数来加载最终的值,并将其打印到屏幕上。