map 全局变量 如果不加锁,会产生抢夺全局变量报错

var mutex sync.Mutex //互斥锁 防止开启协程后 同时1个以上协程同时抢占全局变量报错
// 互斥锁 变成非协程
mutex.Lock //锁上
协程都变成列队
mutex.UnLock //解锁

lock.Lock()
for i := 0; i < 1000; i++ {
	globalVariable["root"]++
}
lock.Unlock()
上面代码等同于
for i := 0; i < 1000; i++ {
	lock.Lock()
	globalVariable["root"]++
	lock.Unlock()
}


//主要应用 于商品抢购 可以读并发协程，写锁列队
var mutex sync.RWMutex
//RWMutex可以mutex.Lock //锁上
//协程都变成列队，写时不能读
//mutex.UnLock //解锁
mutex.RLock()
并发协程读操作 特别注意 这里不是协程都变成列队
读时不能写
mutex.RUnlock()

