成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

go語言中的context是什么

簡介

創(chuàng)新互聯(lián)公司專注于德宏州企業(yè)網(wǎng)站建設,響應式網(wǎng)站建設,成都商城網(wǎng)站開發(fā)。德宏州網(wǎng)站建設公司,為德宏州等地區(qū)提供建站服務。全流程按需定制制作,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務

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

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

應用場景

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

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

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

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

Context 原理

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

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

Context 使用原則

  1. 不要把Context放在結(jié)構(gòu)體中,要以參數(shù)的方式傳遞

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

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

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

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

以上就是golang context用來干嗎的詳細內(nèi)容,更多請關注創(chuàng)新互聯(lián)其它相關文章!

文章名稱:go語言中的context是什么
瀏覽地址:http://jinyejixie.com/article44/jjgdee.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、全網(wǎng)營銷推廣、定制開發(fā)服務器托管、App設計企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
丹寨县| 阜康市| 视频| 南涧| 邓州市| 嘉义市| 阳原县| 西华县| 弥勒县| 洪洞县| 修水县| 绵竹市| 曲靖市| 黄浦区| 车险| 山阴县| 稷山县| 商都县| 阳泉市| 汾西县| 特克斯县| 特克斯县| 陇川县| 清新县| 宝山区| 乌恰县| 平乐县| 和林格尔县| 五大连池市| 马边| 三亚市| 油尖旺区| 筠连县| 靖江市| 康乐县| 玉田县| 合肥市| 荔浦县| 田阳县| 白玉县| 巫山县|