day04-go context

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ā)安全的,所以可以放心地傳遞

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容