1. 程式人生 > >golang 關於鎖 mutex,踩過的坑

golang 關於鎖 mutex,踩過的坑

  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
}