day04-go context

https://mp.weixin.qq.com/s/GpVy1eB5Cz_t-dhVC6BJNw

context 用来解决 goroutine 之间 退出通知、 元数据传递的功能

什么是context

它是 goroutine 的上下文,包含 goroutine 的运行状态、环境、现场等信息。且主要用来goroutine 之间传递上下文信息,包括:取消信号、超时时间、截止时间、k-v 等。

Go 语言中的 server 实际上是一个“协程模型”,也就是说一个协程处理一个请求。例如在业务的高峰期,某个下游服务的响应变慢,而当前系统的请求又没有超时控制,或者超时时间设置地过大,那么等待下游服务返回数据的协程就会越来越多。而我们知道,协程是要消耗系统资源的,后果就是协程数激增,内存占用飙涨,甚至导致服务不可用。更严重的会导致雪崩效应,整个服务对外表现为不可用。

其实类似我们上篇文章写的channel发送关闭信号

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。