gpt4 book ai didi

go - Cond for 循环说明

转载 作者:行者123 更新时间:2023-12-01 22:23:39 27 4
gpt4 key购买 nike

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

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

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

最佳答案

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

关于go - Cond for 循环说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61330985/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com