Rah*_*sad 5 synchronization mutex go
我有多个变量,我想使用此方法使其互斥
type var1WithMutex struct {
mu sync.Mutex
var1 int
}
func (v *var1) Set(value int) {
v.mu.Lock()
v.var1 = value
v.mu.Unlock()
}
func (v *var1) Get() (value int) {
v.mu.Lock()
value = v.var1
v.mu.Unlock()
return
}
Run Code Online (Sandbox Code Playgroud)
同样,有数百个变量,如 var1、var2、var3.... var100
我如何使它们全部互斥而不重复此代码?
请注意,var1、var2、var3 等不是数组的一部分,彼此之间没有任何关系。var2 可以是 int,var3 可以是 User{}
您可以为每种类型创建不同的互斥对象。操场
type MutexInt struct {
sync.Mutex
v int
}
func (i *MutexInt) Get() int {
return i.v
}
func (i *MutexInt) Set(v int) {
i.v = v
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它
func main() {
i := MutexInt{v: 0}
i.Lock()
i.Set(2)
fmt.Println(i.Get())
i.Unlock()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5109 次 |
| 最近记录: |