35 lines
368 B
Go
35 lines
368 B
Go
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()
|
|
}
|