mutex.Lock和deferred mutex.Unock命令

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)

哪个最好?

Ale*_*ica 5

没关系.

无论哪种方式,defer都会mu.Unlock()在退出当前范围时执行(例如,返回的函数).

第一种方法更可取,因为它具有更自然的排序(锁定,然后解锁)以供人类阅读.