0 引言
context
是Go中广泛使用的程序包,由Google官方开发,在1.7版本引入。它用来简化在多个go routine传递上下文数据、(手动/超时)中止routine树等操作,比如,官方http包使用context传递请求的上下文数据,gRpc使用context来终止某个请求产生的routine树。由于它使用简单,现在基本变成了编写go公共库的通用规范。笔者在使用context上有一些经验,遂分享下。
本文主要谈谈以下几个方面的内容:
- context的使用。
- context实现原理,哪些是需要注意的地方。
- 在实践中遇到的问题,分析问题产生的原因。