laboratory/experiments/go/mutex/simple/main.go

36 lines
368 B
Go
Raw Normal View History

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()
}