【发布时间】:2017-12-10 11:51:30
【问题描述】:
注意:我发现标题中的“嵌入”一词是错误的选择,但我会保留它。
我看到很多代码都是这样的:
type A struct {
mu sync.Mutex
...
}
并像这样使用它:
a := &A{}
a.mu.Lock()
defer a.mu.Unlock()
a.Something()
比局部互斥还是全局互斥好?
a := &A{}
var mu sync.Mutex
mu.Lock()
defer mu.Unlock()
a.Something()
我应该什么时候使用前者,还是以后使用?
【问题讨论】:
-
您的第一个示例不起作用,因为您无法在没有显式接收器的情况下调用 A 上的方法表达式。如果您要询问每个结构实例使用单个互斥锁或单个全局互斥锁;您需要全局互斥锁还是要单独锁定每个实例?这取决于您要完成的工作。
-
谢谢。我改变了我的代码。