package stm import ( "flag" "sync" ) var nFlag = flag.Int( "n", 1_000, "The number of iterations to execute", ) func MainTest() { flag.Parse() n := *nFlag for i := 0; i < n; i++ { v := 0 var mu sync.Mutex for i := 0; i < 1000; i++ { go func() { mu.Lock() defer mu.Unlock() v++ }() } for { var read int func() { mu.Lock() defer mu.Unlock() read = v }() if read == 1000 { break } } } }