gpt4 book ai didi

go - 不是 “selected”的 channel 会怎样?

转载 作者:行者123 更新时间:2023-12-03 10:09:49 25 4
gpt4 key购买 nike

根据GOPL,“一个选择要等到某种情况下的通信准备就绪才能进行”,然后未选择的 channel 会发生什么情况?此外,正在向“未选定” channel 发送消息的goroutine是否会卡住,从而导致goroutine泄漏?
还是因为“未选择的” channel 不可访问,它由GC收集(立即?),并且还收集了卡定的goroutine?

最佳答案

未选择的 channel 将保持“原样”。更精确地,将不执行未选择的通信操作。
这是否导致应用程序死锁或goroutine泄漏完全取决于您的应用程序。您可能有多个goroutine在这些 channel 上发送/接收,并且select可能处于重复执行select的循环中,最终执行了所有就绪的通信操作。
channel (类似于Go中的所有值)在无法访问时会被垃圾回收,也就是说,没有Go代码对其进行“引用”。如果goroutine在尝试从 channel 发送/接收时被阻止,则视为对该 channel “具有引用”,因此垃圾收集器无法“抢救”该 channel 。
垃圾收集器不是解决死锁情况的工具,而是释放无法访问的未使用内存的工具。您必须考虑解决死锁。

关于go - 不是 “selected”的 channel 会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65454299/

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