91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go語言中的context是什么

發布時間:2020-06-21 13:12:54 來源:億速云 閱讀:216 作者:元一 欄目:編程語言

簡介

context在Go1.7之后就進入標準庫中了。它主要的用處如果用一句話來說,是在于控制goroutine的生命周期。當一個計算任務被goroutine承接了之后,由于某種原因(超時,或者強制退出)我們希望中止這個goroutine的計算任務,那么就用得到這個Context了。

對于 Golang 開發者來說context(上下文)包一定不會陌生。但很多時候,我們懶惰的只是見過它,或能起到什么作用,并不會去深究它。

應用場景

在 Go http 包的 Server 中,每一個請求在都有一個對應的goroutine去處理。

請求處理函數通常會啟動額外的goroutine用來訪問后端服務,比如數據庫和 RPC 服務。

用來處理一個請求的goroutine通常需要訪問一些與請求特定的數據,比如終端用戶的身份認證信息、驗證相關的 token、請求的截止時間。

當一個請求被取消或超時時,所有用來處理該請求的goroutine都應該迅速退出,然后系統才能釋放這些goroutine占用的資源

Context 原理

Context 的調用應該是鏈式的,通過WithCancel,WithDeadline,WithTimeout或WithValue派生出新的 Context。當父 Context 被取消時,其派生的所有 Context 都將取消。

通過context.WithXXX都將返回新的 Context 和 CancelFunc。調用 CancelFunc 將取消子代,移除父代對子代的引用,并且停止所有定時器。未能調用 CancelFunc 將泄漏子代,直到父代被取消或定時器觸發。go vet工具檢查所有流程控制路徑上使用 CancelFuncs。

Context 使用原則

  1. 不要把Context放在結構體中,要以參數的方式傳遞

  2. 以Context作為參數的函數方法,應該把Context作為第一個參數,放在第一位。

  3. 給一個函數方法傳遞Context的時候,不要傳遞nil,如果不知道傳遞什么,就使用context.TODO

  4. Context的Value相關方法應該傳遞必須的數據,不要什么數據都使用這個傳遞

  5. Context是線程安全的,可以放心的在多個goroutine中傳遞

以上就是golang context用來干嗎的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

讷河市| 阿合奇县| 阳西县| 长沙县| 昌江| 岐山县| 米林县| 勐海县| 汤阴县| 开原市| 唐山市| 沂源县| 庄浪县| 辉县市| 县级市| 唐河县| 洱源县| 略阳县| 金华市| 达州市| 吴旗县| 屏边| 山西省| 新田县| 合江县| 饶平县| 黄梅县| 姜堰市| 中牟县| 抚顺县| 油尖旺区| 环江| 澄城县| 长岛县| 青海省| 秭归县| 合水县| 海伦市| 玉林市| 城固县| 双鸭山市|