前言
GolangContextContextcontext.Background()
Golangcontext.Background()
contextGolang
作用
Golangcontext.go
Golang
请求Agoroutinengoroutine请求 Agoroutineparent

我想了想, 这不就是多协程之间的通信么, 这块我熟啊. 用锁, 用管道, 用什么都行, 只要将取消的消息群发给所有子协程就可以了, 随便列举几个方案:

bool
Context
ContextContext
Deadline() (deadline time.Time, ok bool)Done() <-chan struct{}Err() errorValue(key any) any
Context
  1. 通知子协程提前退出
  2. 携带环境变量
context 包
Golangcontextcontxt.gocontext.gocontext
Context
ContextContextparent
contextcontextcontext
emptyCtxemptyCtxTODOcontextcontextcontextcontextcontextcontextcontextcontextk-vcontext
最后
Context
Context
Contextk-v
DeadlineDoneContext
IsCancel() (cancel bool, e err)

十分简洁, 只需要告诉子协程是否退出及原因不就可以了么?

当然, 也可能官方是出于其他我没有想到的原因考虑.

parentparent
parentContext