go的WaitGroup併發問題,多次執行結果不相等
阿新 • • 發佈:2021-01-01
技術標籤:go
我有一個50+的併發,使用了WaitGroup,在goroutine中加了個計數器,100次迴圈這個併發,每次得到的計數器並不總等於50。
func TestMyLoop(t *testing.T) { for i := 0; i < 100; i++ { myLoop() } } func myLoop() { wg := sync.WaitGroup{} y:=0 for i := 0; i < 50; i++ { wg.Add(1) go func(wg *sync.WaitGroup, i int,y *int) { //log.Printf("i:%d", i) *y++ wg.Done() }(&wg, i,&y) } wg.Wait() log.Println(y) }
結果
為啥,將50改為100,這個差異更大