# Go 并发与生命周期检查清单

## Goroutine 生命周期

- 新增 goroutine 是否有明确退出条件，是否可能因 channel 永久阻塞而泄漏。
- 是否在请求级逻辑中将 `context.Context` 传递到下游调用，避免失去取消信号。
- 后台任务是否区分短生命周期请求和长生命周期服务，避免与请求上下文错误绑定。

## Channel 与同步

- channel 的发送和接收是否成对，是否可能出现无人消费的发送阻塞。
- `close(channel)` 是否只由生产方执行，是否存在多次关闭导致 panic 的路径。
- `select` 分支是否处理 `ctx.Done()` 或超时，避免无限等待。
- `sync.Mutex` / `RWMutex` 是否存在锁顺序反转、长临界区或 defer 解锁遗漏。

## 资源生命周期

- 文件、连接、响应体等资源是否在所有返回路径上关闭（包括错误路径）。
- `defer` 是否位于资源成功创建之后，避免空对象 defer 或遗漏清理。
- 池化对象（如 `sync.Pool`）是否正确归还，且不在归还后继续使用。

## 可观测性与排障

- 并发失败路径是否保留关键上下文（请求 ID、关键参数摘要）而不泄露敏感信息。
- 超时、取消、重试终止是否可从日志或指标区分，便于定位问题。
