我正在尝试解锁互斥锁,如果它被锁定了。但是,这会产生运行时错误,所以我认为我会使用recover方法:
package main
import "sync"
func main() {
var l sync.Mutex
l.Lock()
l.Unlock()
defer func() {
if recover() != nil {
// the return result can be altered
// in a defer function call
}
}()
l.Unlock()
}
然而,即使恢复,我仍然得到:
fatal error: sync: unlock of unlocked mutex
答案 0 :(得分:-1)
您可以在锁定后立即解除锁定互锁,这样您就不必记住为退出该功能的每个返回路径解锁它。
在l.Lock()下删除l.Unlock或将其更改为
defer l.Unlock()
并删除第二个l.Unlock