对于
假如说现在有一个公共的变量var count int
同时有两个方法Add() 和 Sub() Add方法可以将count加10000次,Sub方法可以将count减10000次。
这个问题来说,除了使用mutex之外也可以使用atomic包中的Addint32()方法来实现。
例如:
var count int32
var wg sync.WaitGroup
func add() {
defer wg.Done()
for range 100000 {
atomic.AddInt32(&count, 1)
}
}
func sub() {
defer wg.Done()
for range 100000 {
atomic.AddInt32(&count, -1)
}
}
func main() {
wg.Add(2)
go add()
go sub()
wg.Wait()
fmt.Println(count)
}
运行之后的结果:
0