context

context(上下文)是 控制并发操作生命周期、传递请求范围数据 的核心机制。

取消操作(Cancellation)

设置超时(Timeout / Deadline)

传递请求作用域的值(Request-scoped values)

context包如何实现goroutine的取消?

实现goroutine的取消是cancelCtx结构体,其中的Context字段作为父context,done字段作为channel通道,children字段则是储存子context的map,当取消父context的时候,所有子context接收到channel的信号,实现goroutine的级联取消。

context包如何实现goroutine的超时?

实现goroutine的超时是timerCtx结构体,其内部是cancelCtx字段,timer以及deadline,timer用于触发超时,deadline用于调用链端共享的截止时间,timer会在超时后调用cancelCtx的cancel方法,进而取消goroutine。


Comments