day04-go context
2020-05-06 本文已影响0人
Winnifred_
https://mp.weixin.qq.com/s/GpVy1eB5Cz_t-dhVC6BJNw
context 用来解决 goroutine 之间 退出通知、 元数据传递的功能
什么是context
它是 goroutine 的上下文,包含 goroutine 的运行状态、环境、现场等信息。且主要用来goroutine 之间传递上下文信息,包括:取消信号、超时时间、截止时间、k-v 等。
Go 语言中的 server 实际上是一个“协程模型”,也就是说一个协程处理一个请求。例如在业务的高峰期,某个下游服务的响应变慢,而当前系统的请求又没有超时控制,或者超时时间设置地过大,那么等待下游服务返回数据的协程就会越来越多。而我们知道,协程是要消耗系统资源的,后果就是协程数激增,内存占用飙涨,甚至导致服务不可用。更严重的会导致雪崩效应,整个服务对外表现为不可用。

context是并发安全的,所以可以放心地传递