使用锁的时候,如果将带有锁结构的变量赋值给其他变量,锁的状态会复制,操作中尽量不要这么做,以下的例子
type ak struct {
num int
lock sync.Mutex
}
func main() {
t1 := ak{}
t1.lock.Lock()
var t2 = t1//这一步会把锁的状态也复制过去
t1.lock.Unlock()
t2.lock.Lock()//由于上一步已经是锁定的状态了,这里直接死锁
t2.lock.Unlock()
log.Println("123")
}
网友评论