https://mp.weixin.qq.com/s/GpVy1eB5Cz_t-dhVC6BJNw
context 用來解決 goroutine 之間 退出通知、 元數(shù)據(jù)傳遞的功能
什么是context
它是 goroutine 的上下文,包含 goroutine 的運行狀態(tài)、環(huán)境、現(xiàn)場等信息。且主要用來goroutine 之間傳遞上下文信息,包括:取消信號、超時時間、截止時間、k-v 等。
Go 語言中的 server 實際上是一個“協(xié)程模型”,也就是說一個協(xié)程處理一個請求。例如在業(yè)務的高峰期,某個下游服務的響應變慢,而當前系統(tǒng)的請求又沒有超時控制,或者超時時間設置地過大,那么等待下游服務返回數(shù)據(jù)的協(xié)程就會越來越多。而我們知道,協(xié)程是要消耗系統(tǒng)資源的,后果就是協(xié)程數(shù)激增,內(nèi)存占用飆漲,甚至導致服務不可用。更嚴重的會導致雪崩效應,整個服務對外表現(xiàn)為不可用。

其實類似我們上篇文章寫的channel發(fā)送關(guān)閉信號
context是并發(fā)安全的,所以可以放心地傳遞