Go context在调用链中传递取消、截止时间及请求范围的数据,常用于控制一次请求派生工作的生命周期。
传播与清理
下游函数通常显式接收 Context。创建 WithCancel 或带超时的子上下文后,应在不再需要时调用 cancel,释放相关资源;取消是通知,接收方仍需观察并停止工作。
使用边界
Context 的值用于请求范围的元数据,不应作为任意可选参数容器。取消不意味着数据库已经回滚或远程写入未发生,仍需按具体 API 语义处理不确定结果。
多个 goroutine 可以共享 Context,但它不会自动保证应用中其他共享对象的线程安全。