package main import ( "fmt" "sync" ) var x = 0 func main() { var w sync.WaitGroup var m sync.Mutex numRunners := 2000 w.Add(numRunners) for i := 0; i < numRunners; i++ { go increment(&w, &m) } w.Wait() fmt.Println("Final value of x: ", x) } func increment(wg *sync.WaitGroup, m sync.Locker) { m.Lock() { x = x + 1 } m.Unlock() wg.Done() }