加锁代价比较耗时,需要上下文切换,针对基本数据类型,可以使用原子操作保证线程安全,原子操作在用户态就可以完成,因此性能比互斥锁高
package mainimport ("fmt""sync""sync/atomic")var (wg sync.WaitGroupcount int32mu sync.Mutex)func incCount() {defer wg.Done()for i := 0; i < 100000; i++ {atomic.AddInt32(&count,1)}}func main() {wg.Add(2)go incCount()go incCount()wg.Wait()fmt.Println(count)}
