当前位置: 首页GoGo并发正文 Cond 中 Wait 使用 Go并发 1 613 func (c *Cond) Wait() GoCopy Wait()会自动释放 c.L,并挂起调用者的 goroutine。之后恢复执行,Wait()会在返回时对 c.L 加锁。 除非被 Signal 或者 Broadcast 唤醒,否则 Wait()不会返回。 由于 Wait()第一次恢复时,C.L 并没有加锁,所以当 Wait 返回时,调用者通常并不能假设条件为真。 取而代之的是, 调用者应该在循环中调用 Wait。(简单来说,只要想使用condition,就必须加锁。) c.L.Lock() for !condition() { c.Wait() } ... make use of condition ... c.L.Unlock() GoCopy Go面试题 ㅤ永久会员 打赏 收藏 海报挣佣金 推广链接