day04-go context

作者: Winnifred_ | 来源:发表于2020-05-06 14:03 被阅读0次

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

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

    什么是context

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

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

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

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

    相关文章

      网友评论

        本文标题:day04-go context

        本文链接:https://www.haomeiwen.com/subject/jjzightx.html