【发布时间】:2020-06-09 04:10:53
【问题描述】:
查看 Go 中的一些工作池示例,我无法确定关闭通道的一致方法。例如,这个project on Github 似乎关闭了所有频道,而这个similar implementation 并没有关闭一个频道!我知道关闭频道表示完成;无法在其上发送更多值。但它只是一个运行时断言吗?不打开通道也会留下内存泄漏吗?或者你只是依赖垃圾收集?如果我要明确地关闭第二个示例中打开的频道,我会在哪里关闭?
【问题讨论】:
-
"通道不像文件;你通常不需要关闭它们。只有在必须告诉接收器没有更多值到来时才需要关闭,例如终止范围循环。” tour.golang.org/concurrency/4
-
谢谢!知道如何在第二个示例中关闭通道仍然很有趣。特别是如何正确关闭
readyPool中的嵌套通道。
标签: go concurrency threadpool