gpt4 book ai didi

go - 如何在 Golang 中对多个变量应用单独的 Mutex?

转载 作者:IT王子 更新时间:2023-10-29 02:05:43 26 4
gpt4 key购买 nike

我有多个变量,我想使用这种方法使它们互斥

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
}

同样有上百个变量,比如var1, var2, var3.... var100
我如何在不重复这段代码的情况下使它们相互排斥?
请注意,var1、var2、var3 等不是数组的一部分,彼此之间没有任何关系。 var2 可以是 int,var3 可以是 User{}

最佳答案

您可以为每种类型制作不同的 Mutex 对象。 Playground

type MutexInt struct {
sync.Mutex
v int
}

func (i *MutexInt) Get() int {
return i.v
}

func (i *MutexInt) Set(v int) {
i.v = v
}

然后像这样使用它

func main() {
i := MutexInt{v: 0}
i.Lock()
i.Set(2)
fmt.Println(i.Get())
i.Unlock()
}

关于go - 如何在 Golang 中对多个变量应用单独的 Mutex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27020749/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com