1. 程式人生 > >Go 殺器Context

Go 殺器Context

nbsp 狀態 存在 之前 共享 bubuko 上下 接收 tex

Context通常被譯作上下文,它是一個比較抽象的概念。在討論鏈式調用技術時也經常會提到上下文。一般理解為程序單元的一個運行狀態、現場、快照,而翻譯中上下又很好地詮釋了其本質,上下則是存在上下層的傳遞,上會把內容傳遞給下。在Go語言中,程序單元也就指的是Goroutine。

每個Goroutine在執行之前,都要先知道程序當前的執行狀態,通常將這些執行狀態封裝在一個Context變量中,傳遞給要執行的Goroutine中。上下文則幾乎已經成為傳遞與請求同生存周期變量的標準方法。在網絡編程下,當接收到一個網絡請求Request,在處理這個Request的goroutine中,可能需要在當前gorutine繼續開啟多個新的Goroutine來獲取數據與邏輯處理(例如訪問數據庫、RPC服務等),即一個請求Request,會需要多個Goroutine中處理。而這些Goroutine可能需要共享Request的一些信息;同時當Request被取消或者超時的時候,所有從這個Request創建的所有Goroutine也應該被結束。

技術分享圖片

參考文章:https://studygolang.com/articles/13343

Go 殺器Context