Go 基础知识与框架体系 part 5: context包

目录
这篇文章总结了 Go 的知识体系:context包,包括其中的底层实现等等。
context 包
context 包主要用于父子任务之间的同步取消信号,本质上是一种协程调度的方式。可以通过简化对于处理单个请求的多个 Goroutine 之间与请求域的数据、超时和退出等操作。来看两个例子:
|
|
当并发体超时或者 main 主动停止 worker goroutine 时,worker goroutine 都可以安全退出。
另外在使用 context 时有两点值得注意:上游任务仅仅使用 context 通知下游任务不再需要,但不会直接干涉和中断下游任务的执行,由下游任务自行决定后续的处理操作,也就是说 context 的取消操作是无侵入的;context 是线程安全的,因为 context 本身是不可变的(immutable),因此可以放心地在多个协程中传递使用。