当前位置: 首页 > news >正文

建设网站服务器seo咨询茂名

建设网站服务器,seo咨询茂名,行业网站运营方案,个人网站主页设计教程文章目录一、为什么需要context二、context 接口三、Background 方法四、 with 系列函数1、WithCancel 方法2、WithDeadline 方法3、WithTimeout 方法4、WithValue 方法五、使用注意事项一、为什么需要context 在 Go http包的Server中,每一个请求在都有一个对应的 …

文章目录

  • 一、为什么需要context
  • 二、context 接口
  • 三、Background 方法
  • 四、 with 系列函数
    • 1、WithCancel 方法
    • 2、WithDeadline 方法
    • 3、WithTimeout 方法
    • 4、WithValue 方法
  • 五、使用注意事项

一、为什么需要context

在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务。

用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的token、请求的截止时间。 当一个请求被取消或超时时,所有用来处理该请求的 goroutine 都应该迅速退出,然后系统才能释放这些 goroutine 占用的资源。

二、context 接口

context.Context是一个接口,该接口定义了四个需要实现的方法。

语法:


type Context interface {Deadline() (deadline time.Time, ok bool)Done() <-chan struct{}Err() errorValue(key interface{}) interface{}
}方法解释:Deadline():返回当前Context被取消的时间,也就是完成工作的截止时间(deadline);Done():返回一个Channel,这个Channel会在当前工作完成或者上下文被取消之后关闭,多次调用Done方法会返回同一个Channel;Err():返回当前Context结束的原因,它只会在Done返回的Channel被关闭时才会返回非空的值;如果当前Context被取消就会返回Canceled错误;如果当前Context超时就会返回DeadlineExceeded错误;Value():从Context中返回键对应的值,对于同一个上下文来说,多次调用Value 并传入相同的Key会返回相同的结果;

三、Background 方法

语法:


context.Background() Context

分析: Background()主要用于main函数、初始化以及测试代码中,作为Context这个树结构的最顶层的Context,也就是根Context。

四、 with 系列函数

1、WithCancel 方法

WithCancel返回带有新Done通道的父节点的副本。当调用返回的cancel函数或当关闭父上下文的Done通道时,将关闭返回的上下文的Done通道。

语法:


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

2、WithDeadline 方法

返回父上下文的副本,并将deadline调整为不迟于d。如果父上下文的deadline已经早于d,则WithDeadline(parent, d)在语义上等同于父上下文。当截止日过期时或调用返回的cancel函数时或当父上下文的Done通道关闭时,返回上下文的Done通道将被关闭,以最先发生的情况为准。

语法:


func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc)

3、WithTimeout 方法

WithTimeout返回WithDeadline(parent, time.Now().Add(timeout))

语法:


func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc)

4、WithValue 方法

WithValue函数能够将请求作用域的数据与 Context 对象建立关系。WithValue返回父节点的副本,其中与key关联的值为val。

语法:


func WithValue(parent Context, key, val interface{}) Context 

五、使用注意事项

  1. 推荐以参数的方式显示传递Context
  2. 以Context作为参数的函数方法,应该把Context作为第一个参数。
  3. 给一个函数方法传递Context的时候,不要传递nil,如果不知道传递什么,就使用context.Background()
  4. Context的Value相关方法应该传递请求域的必要数据,不应该用于传递可选参数
  5. Context是线程安全的,可以放心的在多个goroutine中传递
http://www.dt0577.cn/news/8495.html

相关文章:

  • wordpress+淘客代码厦门seo优化外包公司
  • 做视频网站带宽网络平台推广有哪些渠道
  • 网站建设报价单格式常见的微信营销方式有哪些
  • 哪家做网站靠谱成都seo专家
  • 贵阳小程序开发软件公司邵阳网站seo
  • 济南做网站的机构有哪些使用 ahrefs 进行 seo 分析
  • 建设一个网站可以做什么优化精灵
  • 宝安做棋牌网站建设哪家公司便宜广州百度快速优化排名
  • 建站之星怎么收费公司seo营销
  • 类似于美团的网站怎么做的企业宣传推广怎么做
  • 对于网站运营应该如何做网站开发从入门到实战
  • 怎样建立自己的个人网站2024百度下载
  • 手机网站建设视频外链seo服务
  • 网页设计素材网站推荐网络营销的类型有哪些
  • 中国商标查询长沙关键词优化推荐
  • 湘潭seo 推广快湘潭磐石网络seo优化一般优化哪些方面
  • 网站被挂马无法访问b站刺激战场视频
  • win7自己电脑做网站产品推广平台
  • ecshopseo的搜索排名影响因素有
  • 快速做网站企业站长之家字体
  • 深圳英迈思做网站好么网站是怎么优化推广的
  • 千阳做网站网站排名seo软件
  • 做品牌网站的企业网店代运营公司哪家好
  • 怎么免费从网站上做宣传免费发布信息网站大全
  • 网站 东莞长安seo网站优化培训
  • 永久域名网站网络营销经典成功案例
  • 华为商城的网站建设seo网络优化平台
  • 2023冬天11月疫情能结束吗湖南seo优化推荐
  • 做外账要登什么网站seo关键词seo排名公司
  • 幼儿园资质做网站需要什么资质html网页制作动态效果