无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

golang context的概念和使用方法

2023-04-14 18:33 作者:daxiavip  | 我要投稿

什么是context?

  • 請求Go服務(wù)器的各request通過不同的goroutine來處理

  • request的handle可以訪問DB或者RPC等

  • 保存請求過程中的token,request期限等

  • request超時的時候,釋放資源

  • 可以把request作用域的值全部傳給goroutine的context包

使用方法

主要的使用場景有兩種:

  • 傳遞request作用域的值

  • cancel取消

context.Context interface

goblog說明概要:

  • content取消,超時的時候返回關(guān)閉的通道的Done()

  • 通過Err()?error結(jié)構(gòu)體返回,為什么Done通道關(guān)閉了

  • Deadline設(shè)定了的場合,返回Deadline的Deadline()

  • 返回通過key保管的值

生成

通過下面兩種發(fā)發(fā)可以生成

通過http.Request.Context()也可以獲得

  • Background()

? ? ? 基本上都通過這種獲取


  • TODO()

    不知道是否要使用但是不想傳nil,那么就用這個方法。

    行為上和Background一樣,返回一個空的context


request作用域的值的傳播

不要把什么信息都放到里面,按照最小需求把認(rèn)證和Deadlin的信息放進去即可。

  • Set值 WithValue()

  • Get值 Value()

取消處理

  • WithCancel(parent Context) (ctx Context,cancel CancelFunc)

    父context傳遞給子context的話,子的context和cancel方法

    第二個返回值CancelFunc可以取消子的context

  • WithTimeout

第二個參數(shù)如果指定的話,經(jīng)過了這些時間就會執(zhí)行取消處理

  • WithDeadline

和WithTimeout基本相同,不是經(jīng)過多久,而是截止到什么時候取消。

例子

執(zhí)行結(jié)果:


寫這個文章是參照了下面這個頁面:

https://qiita.com/marnie_ms4/items/985d67c4c1b29e11fffc

golang context的概念和使用方法的評論 (共 條)

分享到微博請遵守國家法律
卢氏县| 古浪县| 额尔古纳市| 全南县| 大理市| 班戈县| 泾源县| 资阳市| 北海市| 南乐县| 通化县| 襄汾县| 兴隆县| 门源| 射洪县| 河源市| 三原县| 潼南县| 义马市| 鄯善县| 武冈市| 台安县| 米泉市| 桂阳县| 调兵山市| 库尔勒市| 呼伦贝尔市| 凤山市| 湘潭县| 台东市| 固阳县| 保康县| 凉城县| 英吉沙县| 新乡县| 维西| 于都县| 菏泽市| 桃园县| 新竹县| 三穗县|