原子Adduint32溢出



我正在使用以下代码在进程中获取唯一ID:

for i := 0; i < 10; i++ {
    go func() {
        for {
            atomic.AddUint32(&counter, 1)
            time.Sleep(time.Millisecond)
        }
    }()
}

如果计数器值溢出UINT32的限制会发生什么?

该值周围缠绕,这很容易证明:

u := uint32(math.MaxUint32)
fmt.Println(u)
u++
fmt.Println(u)

// or
u = math.MaxUint32
atomic.AddUint32(&u, 1)
fmt.Println(u)

https://play.golang.org/p/lcom3nmync

相关内容

  • 没有找到相关文章

最新更新