4.5、Golang 并发编程-Mutex 互斥锁实现同步
Mutex 互斥锁实现同步
示例
go
package main
import (
"fmt"
"sync"
"time"
)
var value = 100
var wg sync.WaitGroup
var lock sync.Mutex
func add() {
defer wg.Done()
lock.Lock()
time.Sleep(time.Millisecond * 2)
value += 1
fmt.Printf("i++: %v\n", value)
lock.Unlock()
}
func sub() {
defer wg.Done()
lock.Lock()
time.Sleep(time.Millisecond * 10)
value -= 1
fmt.Printf("i--: %v\n", value)
lock.Unlock()
}
func main() {
for i := 0; i < 100; i++ {
wg.Add(1)
go add()
wg.Add(1)
go sub()
}
wg.Wait()
fmt.Printf("end: %v\n", value)
}