文章目录
context 简介
为什么要用 context 呢?因为在并发编程中,一般我们可以通过在主协程中 close 掉 unbuffered channel 来对子协程进行生命周期的管控,但是如果协程中又有协程,然后子协程中又有协程,不断嵌套,使用 close channel 的方式来管控所有子协程生命周期就显得很复杂了,所以有没有一种方式能够很好的管理这些子协程的生命周期呢?答案是肯定的,我们需要这样一种机制:
- 上层任务取消,下层的任务也会被取消掉
- 中间层任务取消,下层任务会被取消掉,但是上层任务不会被取消掉
- 并且可以管控住下层任务的超时时间或者截止时间
context 包中的源代码内容其实还是很适合通读一遍的,因为总共代码行数就 500 多行,其中还包含大量的代码行注释
接口 Context
Context 接口定义了上下文的信息,Done chan 是超时控制的关键。Context 对外暴露,用来控制多协程的生命周期
type Context interf