有一个sync互斥锁的问题!为什么第一个1锁定后第2个goroutine 也可以锁定

aiaa5505 · 2017-11-05 03:17:32 · 1122 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2017-11-05 03:17:32 的主题,其中的信息可能已经有所发展或是发生改变。

WF1005R`[A`3HG~59U]CR61.png

一共3个goroutine 第一个锁定 然后wait睡眠,第二个 第三个怎么任然可以锁定!!互斥锁的规则不是只能一个锁定,解锁后 才能给下一个goroutine 锁定吗? prmf.png


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1122 次点击  
加入收藏 微博
3 回复  |  直到 2017-11-06 12:29:04
marlonche
marlonche · #1 · 7年之前
truexf
truexf · #2 · 7年之前

你把mutex作为cond的内部lock混用了,cond wait的时候已经解锁cond的内部lock了。如果想达到你的效果,你要用一个新的mutex和cond不要混在一起。

感觉对cond的理解有问题。

另外建议用channel更简单。所有与锁和信号量有关的都可以用channel实现。

aiaa5505
aiaa5505 · #3 · 7年之前
truexftruexf #2 回复

你把mutex作为cond的内部lock混用了,cond wait的时候已经解锁cond的内部lock了。如果想达到你的效果,你要用一个新的mutex和cond不要混在一起。 感觉对cond的理解有问题。 另外建议用channel更简单。所有与锁和信号量有关的都可以用channel实现。

好的谢谢!

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传