【发布时间】:2021-04-03 20:22:13
【问题描述】:
根据GOPL,“选择等待,直到某些情况下的通信准备好进行”,那么未选择的通道会发生什么?此外,向“未选择”通道发送消息的 goroutine 是否会卡住,从而导致 goroutine 泄漏?
还是因为“未选中”的通道不可达,被GC回收(立即?),卡住的goroutine也被回收?
【问题讨论】:
-
Goroutines 不会被“收集”(终止并释放它们的资源),直到它们正在运行的函数完成其执行或恐慌并使进程崩溃。请记住,通道发送操作也是有效的
select情况,因此您可以尝试在通道上发送,但如果发送在设定的时间内没有成功,则超时并执行其他操作(例如终止 goroutine)。
标签: go concurrency channel