Учитывая следующее:
package main
import (
"fmt"
"sync"
)
func main() {
n := 100
var wg sync.WaitGroup
wg.Add(n)
x := 0
for i := 0; i < n; i++ {
go func() {
defer wg.Done()
x++
}()
}
wg.Wait()
fmt.Println(n, x)
}
Я бы ожидал, что x
всегда будет достигать 100
к моменту печати в конце, но иногда печатается до 95
. Что мне здесь не хватает?