想要得到正确的结果,要把计数器的操作代码部分加上锁:
var wg sync.WaitGroup
var lock sync.Mutex
for i := 0; i < 1000; i++ {
wg.Add(1)
go func() {
defer wg.Done()
lock.Lock()
counter++
lock.Unlock()
}()
}
wg.Wait()
println(counter)
这样能够得到正确结果:
➜ go run main.go
1000
最后编辑: kuteng 文档更新时间: 2022-03-22 19:29 作者:kuteng