- 上锁后任意时刻,只能有一个协程(线程)访问该资源,其他协程等待
- 标准库sync中的Mutex结构体类型表示,sync.Mutex类型只有两个公开的指针方法,Lock和Unlock
package main
import (
"fmt"
"sync"
"time"
)
var mutex sync.Mutex // 创建一个互斥量,新建的互斥锁状态为0
func printer(str string) {
mutex.Lock() // 访问共享数据之前,加锁,互斥锁状态为1
for _, ch := range str {
fmt.Printf("%c", ch)
time.Sleep(time.Millisecond * 300)
}
mutex.Unlock() // 共享数据访问结束,解锁
}
func person1() { // 先
printer("hello")
}
func person2() { // 后
printer("world")
}
func main() {
go person1()
go person2()
for {
}
}