-
互斥锁(互斥量)
- A、B go 程共同访问共享数据,由于 CPU 调度机制,需要对共享数据访问顺序加以限定(同步)。
- 创建 mutex (互斥锁),访问共享数据之前,加锁;访问结束,解锁。
- 在 A go 程加锁期间,B go 程加锁会失败。(阻塞)
- 直至 A go 程解锁后,B go 程才能从阻塞处恢复执行。
// 创建一个互斥锁,新建的互斥锁状态为 0 ,表示未加锁。锁只有一把。 var mutex sync.Mutex func printer(str string) { // 访问共享数据之前,加锁 mutex.Lock() for _, ch := range str { fmt.Printf("%c", ch) time.Sleep(time.Millisecond * 200) } // 访问共享数据结束,解锁 mutex.Unlock() } func person1() { printer("hello") } func person2() { printer("world") } func main() { go person1() go person2() for { ; } }
Golang 学习 - 互斥锁
最新推荐文章于 2024-04-26 14:49:58 发布