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  }