翻译自:Go Concurrency Patterns: Context地址:https://blog.golang.org/context
简介在Go server端,每个请求都是通过新起goroutine来处理。请求处理程序通常会启动其他goroutine来访问后端,例如数据库和RPC服务。处理该请求的goroutine集合通常需要访问特定于请求的值,例如最终用户的身份,授权令牌和请求的时限。当一个请求被取消或超时时,处理该请求的所有goroutine应该迅速退出,以便系统可以回收他们正在使用的资源。
在Google,我们开发了一个Context包,可以轻松地跨API边界将请求范围(request-scoped)的值,取消信号和截止日期(deadlines)传递给处理请求的所有goroutine。该软件包可作为Context公开使用。本文将介绍如何使用该package。
ContextContext包的核心是Context类型:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Context跨API边界携带期限(deadline)、取消信号和请求范围(request-scoped)的值。Context的方法是协程安全的。
type Context interface {
// Done返回一个channel,该channel在Context被取消或超时时关闭。
Done()
关注
打赏
立即登录/注册


微信扫码登录