面试真题

Go · 中等 · 百度

go的并发编程如何避免死锁?

中等 Go 🎤 百度
参考答案
结论:避免死锁需确保channel操作有配对、加锁顺序一致、select超时、避免协程泄露。核心要点:1)无缓冲channel读写需另一协程接应;2)多锁按固定顺序获取;3)select加default或time.After防阻塞;4)context取消;5)WaitGroup计数准。原理:死锁因所有goroutine阻塞,运行时检测全asleep则panic。避免:带缓冲channel、select default、defer解锁、errgroup。示例:select{ case ch<-1:; case <-time.After(time.Second):}。
题目整理自公开面经,答案由校招宝自研生成,仅供参考