Go 的 context.WithCancel 到底该什么时候调用 cancel?一个容易被忽略的 goroutine 泄漏点
在 Go 里用 context.WithCancel 做超时控制或请求取消时,很多人会因为一个细节踩坑:cancel 函数到底该在什么时候调用。常见写法是 ctx, cancel := context.WithCancel(parent),然后只把 ctx 传给下游,cancel 忘了调用或者放在错误的位置。结果是 context 关联的 timer 和 goroutine 迟迟不释放,短时间内看不出问题,高并发下内存和 goroutine 数持续上涨。这个问题多出现在 HTTP 处理器、后台任务分发、数据...