我正在使用以下代码在进程中获取唯一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