sync.Mutex,锁复制

2020-12-04  本文已影响0人  哆啦在这A梦在哪

使用锁的时候,如果将带有锁结构的变量赋值给其他变量,锁的状态会复制,操作中尽量不要这么做,以下的例子

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")
}

上一篇下一篇

猜你喜欢

热点阅读