github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/prepare/12_cgo/memory/main.go (about) 1 package main 2 3 import ( 4 "sync" 5 "time" 6 ) 7 8 // 有bug 对count变量的访问并没有形成临界区 9 // go run -race client.go 10 func main() { 11 var wg sync.WaitGroup 12 var count int 13 var ch = make(chan bool, 2) 14 for i := 0; i < 10; i++ { 15 wg.Add(1) 16 go func() { 17 ch <- true 18 count++ 19 time.Sleep(time.Millisecond) 20 count-- 21 <-ch 22 wg.Done() 23 }() 24 } 25 wg.Wait() 26 27 }