go并发: 使用独占锁(排他锁)
一,代码:
// 入口函数
func main() {
lock:=sync.Mutex{}
go func() {
lock.Lock()
defer lock.Unlock()
for i:=1; i<=5; i++ {
time.Sleep(time.Millisecond)
fmt.Println(i)
}
}()
go func() {
lock.Lock()
defer lock.Unlock()
for i:=1; i<=5; i++ {
time.Sleep(time.Millisecond)
fmt.Println(i*10)
}
}()
time.Sleep(time.Second)
}
二,测试效果:
未加锁
$ go run main.go
1
10
20
2
3
30
40
4
5
50
加锁后:
$ go run main.go
10
20
30
40
50
1
2
3
4
5
浙公网安备 33010602011771号