![WF1005R`[A`3HG~59U]CR61.png](https://static.studygolang.com/171105/c8d5ffeb8c2370b965d9eebbc7baae8d.png)
一共3个goroutine 第一个锁定 然后wait睡眠,第二个 第三个怎么任然可以锁定!!互斥锁的规则不是只能一个锁定,解锁后 才能给下一个goroutine 锁定吗?
![prmf.png](https://static.studygolang.com/171105/e2fea4965e7e2b6a7e076a6bac0e4b65.png)
更多评论
Java的这个文档说的比较清楚
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Condition.html
#1
你把mutex作为cond的内部lock混用了,cond wait的时候已经解锁cond的内部lock了。如果想达到你的效果,你要用一个新的mutex和cond不要混在一起。
感觉对cond的理解有问题。
另外建议用channel更简单。所有与锁和信号量有关的都可以用channel实现。
#2