goroutine 泄漏不一定忘了 cancel:还要看 sender 和 receiver 谁没回家
goroutine 泄漏最讨厌的地方,不是它会炸,而是它不炸。
它先是悄悄多几个,再多几十个,最后把内存、延迟、CPU 一起拖下水。你回头看日志,发现代码没报错;你再看监控,发现曲线只是在往上爬。
很多人看到这种情况,第一反应是:是不是忘了 …
goroutine 泄漏最讨厌的地方,不是它会炸,而是它不炸。
它先是悄悄多几个,再多几十个,最后把内存、延迟、CPU 一起拖下水。你回头看日志,发现代码没报错;你再看监控,发现曲线只是在往上爬。
很多人看到这种情况,第一反应是:是不是忘了 …
上一篇讲到最后,其实只把问题说完了一半。
如果你面对的是任务、结果、信号和访问权交接,channel 确实比 mutex 更顺手。它能把 goroutine 之间的关系写出来,让代码不只是在“保护状态”,而是在表达一段通信。
但很多 …