Go 1.21 context.WithoutCancel 实战:父 context 取消了,收尾任务还要继续跑HTTP 请求处理到一半,客户端断开连接,r.Context() 被取消——这是好事,能及时停掉没用的工作。但有个尴尬场景:你在这个请求里还想异步记一条审计日志、或者把结果写回缓存,这些收尾工作不该跟着请求一起被取消。Go 1.21 新加的 context.WithoutCancel 就是为这个来的。这篇讲清楚它解决什么、怎么用,以及顺带认识同批加入的 WithDeadlineCause 和 Cause。