多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## Mutex Mutex 用于提供一种加锁机制(Locking Mechanism),可确保在某时刻只有一个协程在临界区运行,以防止出现竞态条件 ~~~ func LockConcurrent(){ var lock sync.Mutex counter := 0 for i := 0; i < 5000; i++ { go func() { defer func() { lock.Unlock() }() lock.Lock() counter += 1; }() } time.Sleep(1* time.Second) fmt.Println("counter:", counter) } ~~~ *注意:传递 Mutex 的地址很重要,如果传递的是Mutex的值,而非地址那么每个协程都会得到 Mutex 的一份拷贝,竞态条件还是会发生*