Go的读写锁sync.RWMutex的简单使用
package main import ( "fmt" "sync" "time" ) // 协程计数器 var wg sync.WaitGroup var rwLock sync.RWMutex // 读写锁 var sum int func main() { fmt.Println("嘻嘻") sum = 666 wg.Add(6) for i := 0; i < 5; i++ { go func() { defer wg.Done() rwLock.RLock()// 加读锁 fmt.Println(sum) rwLock.RUnlock()// 解读锁 }() } go func() { defer wg.Done() rwLock.Lock()// 加锁 fmt.Println("修改数据") sum += 222 time.Sleep(time.Second*6) fmt.Println("修改完成") rwLock.Unlock()// 解锁 }() wg.Wait() // 等待所有的协程执行完毕 }