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

淘宝客网站建设百度商家平台

淘宝客网站建设,百度商家平台,做项目管理的网站,wordpress pdf下载链接文章目录一、为什么需要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.khdw.cn/news/49963.html

相关文章:

  • 自己电脑做网站必须装jdk北京seo优化方案
  • 网站界面设计的要求优化网站技术
  • html5手机网站开发教程百度搜索名字排名优化
  • 公司网站门户建设技术参数表广告竞价排名
  • 百度一下建设部网站上海百度推广客服电话多少
  • html是什么意思搜索引擎优化免费
  • 北京网站制作招聘网优化大师班级优化大师
  • 提供邢台专业做网站台州seo排名优化
  • 动态网站开发技术 百度百科灰色词网站seo
  • 盘锦建网站搜索引擎优化好做吗
  • 有关设计的网站免费建站
  • 个人网站制作总体设计广州网站优化页面
  • 万江做网站中国十大软件外包公司排名
  • 成都网站制作长沙关键词排名优化提升培训
  • 怎么做视频资源网站网络策划
  • 黄页网站推广app媒体资源
  • 网站建设3000字什么是优化师
  • 阿里云 个人网站备案网络软件开发
  • 重庆制作手机网站5118站长网站
  • 如何做色流量网站网站推广优化
  • 做下载网站有哪些广告投放是做什么的
  • 建网站找汉狮网站快速排名上
  • wordpress 可视化插件中国seo
  • trinseo公司优化营商环境建议
  • 网络公司运营是干啥的网站搜索引擎优化方案的案例
  • 东莞阿里网站设计做百度推广销售怎么找客户
  • 网站logo图怎么做宁德市医院东侨院区
  • 昆明做网站建设怎么样友情链接如何添加
  • 东莞室内设计公司排名seo薪资seo
  • 怀化seo快速排名快速优化官网