- Context 介绍
Context的主要作用就是在不同的 Goroutine 之间同步请求特定的数据、取消信号以及处理请求的截止日期。- 在不同 Goroutine 之间对信号进行同步避免对计算资源的浪费,与此同时
Context还能携带以请求为作用域的键值对信息。 Context其实是 Go 语言context包对外暴露的接口,该接口定义了四个需要实现的方法Deadline方法需要返回当前Context被取消的时间,也就是完成工作的截止日期;Done方法需要返回一个Channel,这个Channel会在当前工作完成或者上下文被取消之后关闭,多次调用Done方法会返回同一个Channel;Err方法会返回当前Context结束的原因,它只会在Done返回的Channel被关闭时才会返回非空的值;- 如果当前
Context被取消就会返回Canceled错误; - 如果当前
Context超时就会返回DeadlineExceeded错误;
- 如果当前
Value方法会从Context中返回键对应的值,对于同一个上下文来说,多次调用Value并传入相同的Key会返回相同的结果,这个功能可以用来传递请求特定的数据;
context包的方法func WithCancel(parent Context) (ctx Context, cancel CancelFunc)func WithDeadline(parent Context, d time.Time) (Context, CancelFunc)func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc)