直接上死锁例子
原因当有写锁申请时会阻塞掉新的读锁申请(写锁优先原则)
package main
import (
"sync"
"time"
)
var lock sync.RWMutex
func main() {
go func() {
outRLock()
}()
time.Sleep(time.Second)
wLock()
}
func outRLock() {
lock.RLock()
defer lock.RUnlock()
time.Sleep(time.Second * 2)
innerRLock()
}
func innerRLock() {
lock.RLock()
defer lock.RUnlock()
}
func wLock() {
lock.Lock()
defer lock.Unlock()
}