wen*_*liu -1 locking go deferred
在golang中,sync.Mutex Lock和Unlock是usul操作,但是Lock和defer Unlock的正确顺序是什么?
mu.Lock()
defer mu.Unlock()
Run Code Online (Sandbox Code Playgroud)
要么
defer mu.Unlock()
mu.Lock()
Run Code Online (Sandbox Code Playgroud)
哪个最好?
没关系.
无论哪种方式,defer都会mu.Unlock()在退出当前范围时执行(例如,返回的函数).
第一种方法更可取,因为它具有更自然的排序(锁定,然后解锁)以供人类阅读.