共计 344 个字符,预计需要花费 1 分钟才能阅读完成。
3 个指针方法:
Wait() 等待 goroutine 等待接受通知,Single() Broadcast() 解除阻塞 Single() 发送通知,如果存在多个 goroutine, 只会任意选择一个 Broadcast() 广播 方法给所有人
下面时 wait 方法底层执行流程
- 尝试解锁
- wait 尝试解锁,解完锁之后等待其他给发通知,===> 进入了阻塞状态, 等待被唤醒:single(),broadcast()
- 一旦被唤醒后,又会锁定
func (c *Cond) Wait() {c.checker.check()
t := runtime_notifyListAdd(&c.notify)
c.L.Unlock()
runtime_notifyListWait(&c.notify, t)
c.L.Lock()}
操作案例:
sync.Cond
正文完