golang 关于锁 mutex,踩过的坑

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fwhezfwhez/article/details/82900498
  1. mutex实例无需实例化,声明即可使用
func add(){
    var mutex sync.Mutex
    mutex.Lock()
    defer mutex.Unlock()
    fmtPrintln("test lock")
}
  1. mutex在传递给外部使用的时候,需要传指针,不然传的是拷贝,会引起锁失败。并且指针的mutex是一定要实例化过的。
func add() *sync.Mutex{
 var m = &sync.Mutex{}
 return m
}
  1. 对同一个锁,进行多次锁,会死锁
func a(){
  var mutex sync.Mutex
  mutex.Lock()
  muex.Lock() // dead lock
}

猜你喜欢

转载自blog.csdn.net/fwhezfwhez/article/details/82900498