数据竞争发生在两个或多个goroutine同时访问同一内存,至少一个访问是写操作,且它们之间没有同步时。其结果是未定义的行为——数据损坏、崩溃或间断性出现的错误结果。Go 提供了一个内置的竞争检测器来发现它们。
数据竞争是什么样的
go
{
counter :=
wg sync.WaitGroup
i := ; i < ; i++ {
wg.Add()
{
wg.Done()
counter++
}()
}
wg.Wait()
fmt.Println(counter)
}
