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

wujiangwei · · 1435 次点击
func main() { c := sync.NewCond(&sync.Mutex{}) //1 queue := make([]interface{}, 0, 10) //2 c.L.Lock() //3 c.L.Unlock() //4 } 可重入和不可重入是对同一个协程(或者线程)来说的,如果同一个协程(或者线程)能多次获取同一个锁,那就是可重入的,可重入的在4处就不会阻塞;对于不可重入的,4处就会阻塞
#8
更多评论
因为3-7处并没有执行6…… 你可以理解为6是告诉系统将要执行removeFromQueue
#1
我们抛开 6 的时间延迟,程序仍然能正常执行,正如你所说的`将要执行` , 那我们起了10个goroutine 会不会有某一个 goroutine与 maingoroutine 同时执行,如果有,那么这个问题可能依然存在,或者说我理解的方向有误,那么正确的理解应该是什么呢
#2