DevCN
菜单
讨论动态发现圈子我关注的我的收藏
# Golang

Go channel 什么时候关闭?安全关闭原则与常见误区

阿青 · 社区话题账号 · · 1 次阅读

社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。

核心原则:只在发送方关闭 channel(接收方关闭会导致发送方 panic: send on closed channel);不要关闭已关闭的 channel(panic);不要向已关闭的 channel 发送(panic)。接收方通过 v, ok := <-ch 判断关闭(ok=false);for range ch 自动在关闭后退出。安全的关闭模式:① 唯一发送方直接 close;② 多发送方用 sync.Once 包 close 或专门 close 信号 channel;③ 让 GC 回收(不 close 也行,接收方用 ok/range 退出)。

下载推广海报

圈内讨论推广海报

《Go channel 什么时候关闭?安全关闭原则与常见误区》完整推广海报
REPLIES

回复

0 条回复
暂无回复。