go互斥锁 主要用于解决资源竞争,并发程序中对共享资源进行访问控制的主要手段
对于访问共享资源的协程都加上锁并最后解锁
关键
lock
unlock
package main
import (
"sync"
)
var wg sync.WaitGroup
var lk sync.Mutex
var total int
func sub() {
defer wg.Done()
for i:=0;i<1000;i++{
lk.Lock()
total=total-1
lk.Unlock()
}
}
func add() {
defer wg.Done()
for i:=0;i<1000;i++ {
lk.Lock()
total=total+1
lk.Unlock()
}
}
func main() {
wg.Add(2)
go sub()
go add()
wg.Wait()
println(total)
}