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

Go channel 死锁场景盘点:如何快速定位与避免

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

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

死锁:所有 goroutine 都阻塞且无法解除,运行时报 fatal error: all goroutines are asleep - deadlock!。常见:① 无缓冲 channel 只发不收或只收不发;② 主 goroutine 阻塞等子 goroutine,子 goroutine 又在等主 goroutine 数据;③ 忘记 close 导致 range 永不退出(不算死锁但泄漏);④ 锁 + channel 混用循环等待。排查:看堆栈找阻塞点、检查收发配对、加超时 select 兜底、用 go vet 检查部分静态问题。

下载推广海报

圈内讨论推广海报

《Go channel 死锁场景盘点:如何快速定位与避免》完整推广海报
REPLIES

回复

0 条回复
暂无回复。