多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 使用信道处理竞态条件 ~~~go var x = 0 func increment(wg *sync.WaitGroup, ch chan bool) { ch <- true x = x + 1 <- ch wg.Done() } func main() { var w sync.WaitGroup ch := make(chan bool, 1) for i := 0; i < 1000; i++ { w.Add(1) go increment(&w, ch) } w.Wait() fmt.Println("final value of x", x) } ~~~ ## Mutex vs 信道 当 Go 协程需要与其他协程通信时,可以使用信道;而当只允许一个协程访问临界区时,可以使用 Mutex