大神解释下:不是说锁不可重入么

wujiangwei · 2019-01-30 14:03:57 · 1584 次点击

看sync.Cond的源码

func (c *Cond) Wait() {
    c.checker.check()
    t := runtime_notifyListAdd(&c.notify)
    c.L.Unlock()
    runtime_notifyListWait(&c.notify, t)
    c.L.Lock()
}

进入c.Wait()后会解锁

#9
更多评论

因为3-7处并没有执行6……

你可以理解为6是告诉系统将要执行removeFromQueue

#1

我们抛开 6 的时间延迟,程序仍然能正常执行,正如你所说的将要执行 , 那我们起了10个goroutine 会不会有某一个 goroutine与 maingoroutine 同时执行,如果有,那么这个问题可能依然存在,或者说我理解的方向有误,那么正确的理解应该是什么呢

#2