hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 文章 - 后端开发 - 正文 看Cosplay古风插画小姐姐,合集图集打包下载:炫龙网 · 炫龙图库

golang context用来干嘛_后端开发

2019-12-04后端开发ki4网23°c
A+ A-

context在Go1.7以后就进入规范库中了。它重要的用途假如用一句话来讲,是在于掌握goroutine的生命周期。当一个盘算使命被goroutine承接了以后,由于某种原因(超时,或许强迫退出)我们愿望中断这个goroutine的盘算使命,那末就用获得这个Context了。 (引荐进修:go)

关于 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。

遵照划定规矩

遵照以下划定规矩,以坚持包之间的接口一致,并启用静态剖析东西以搜检上下文流传。

不要将 Contexts 放入构造体,相反context应当作为第一个参数传入,命名为ctx。 func DoSomething(ctx context.Context,arg Arg)error { // ... use ctx ... }

纵然函数许可,也不要传入nil的 Context。假如不知道用哪一种 Context,能够运用context.TODO()。

运用context的Value相干要领只应当用于在顺序和接口中通报的和要求相干的元数据,不要用它来通报一些可选的参数

雷同的 Context 能够通报给在差别的goroutine;Context 是并发平安的。

以上就是golang context用来干嘛的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
golang context用来干嘛_后端开发

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签:

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>