下面的代码为什么会死锁?fatal error: all goroutines are asleep - deadlock!

xulc2021 · · 1259 次点击
解答:根据 sync/rwmutex.go  中,读写锁的注释可以知道,读写锁当有⼀个协程在等待写锁时,其他协程是不能获得读锁的,⽽在 A 和 C 中同⼀个调⽤链中间需要让出读锁,让写锁优先获取,⽽ A 的读锁⼜要求 C 调⽤完成,因此死锁。
#5
更多评论
有没有 老gopher来帮我解答一下~
#1
jan-bar
想要拥有,必定付出。
go的锁是不可重入锁。。感觉是你A里面lock后再到C里面lock。。
#2