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()
在退出当前范围时执行(例如,返回的函数).
第一种方法更可取,因为它具有更自然的排序(锁定,然后解锁)以供人类阅读.