参考
https://go.dev/blog/context
https://draveness.me/golang/docs/part3-runtime/ch06-concurrency/golang-context/
每个请求会在协程处理,一般每个request handler会启动另外的协程去访问后端,比如数据库和rpc。这些协程需要访问request里的值,比如用户身份等。当一个请求取消了或者超时了,所有在这个请求上工作的协程都应该快速退出,让系统可以回收这些协程正在使用的资源
google开发了context包来做这个事情。