登录
首页 >  Golang >  Go问答

条件循环的解释

来源:stackoverflow

时间:2024-02-20 15:03:21 491浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《条件循环的解释》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

根据 https://golang.org/pkg/sync/#Cond.Wait,必须将 Wait() 调用包装在 for 循环中,因为第一次恢复时,c.L 据称未锁定。这与上面的句子“...,在返回之前等待锁定 c.L。”相矛盾。

运行此代码时,即使 Wait() 在没有 for 循环的情况下立即恢复执行,也不会发生运行时错误,并且 Unlock() 在未先锁定而解锁时应抛出运行时错误。

假设在 Go 中使用 Cond 时不需要 for 循环,因为使用 Cond 时不会出现虚假唤醒,是否正确?


解决方案


For 循环是必要的,因为当 Wait 返回时,不能保证条件仍然成立。当对 BroadcastSignal 的调用发生时,Wait 调用将被唤醒。当 Wait 唤醒时,它会锁定该锁,但不能保证在锁定发生之前条件发生变化。解锁和挂起在入口处是原子的,但唤醒和锁定在出口处不是原子的。

理论要掌握,实操不能落!以上关于《条件循环的解释》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>