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

手机怎么制作网站教程视频我想用c 来做网站

手机怎么制作网站教程视频,我想用c 来做网站,门户网站推广优势,做网站西美花街1. 引言context 包在 Go 1.7 中被引入标准库,并迅速成为 Go 并发编程中不可或缺的一部分。它主要用于在处理请求的 goroutine 之间传递截止时间(Deadlines)、**取消信号(Cancellation Signals)**以及其他与请求相关的值…

1. 引言

context 包在 Go 1.7 中被引入标准库,并迅速成为 Go 并发编程中不可或缺的一部分。它主要用于在处理请求的 goroutine 之间传递截止时间(Deadlines)、**取消信号(Cancellation Signals)**以及其他与请求相关的值。

理解 context 的设计,对于构建健壮、可控的微服务和并发程序至关重要。

2. Context 接口

context 包的核心是一个简单的接口:

type Context interface {Deadline() (deadline time.Time, ok bool)Done() <-chan struct{}Err() errorValue(key interface{}) interface{}
}
  • Deadline(): 返回一个截止时间。当到达这个时间点,Context 会被自动取消。

  • Done(): 返回一个 channel。当 Context 被取消或超时时,这个 channel 会被关闭。这是监听取消信号的主要方式。

  • Err(): 在 Done() 被关闭后,Err() 会返回一个非 nil 的错误,解释 Context 被取消的原因(例如 context.Canceledcontext.DeadlineExceeded)。

  • Value(): 用于在 Context 中传递请求范围的数据,例如用户 ID、Trace ID 等。注意:不应滥用 Value 来传递函数的可选参数。

3. Context 的实现:可取消的上下文树

context 的实现是一种父子级联的树形结构。当你通过 context.WithCancel, context.WithDeadline, context.WithTimeout 创建一个新的 Context 时,你实际上是在一个父 Context 下创建了一个子 Context

核心特性

  • 取消信号的传播:当一个父 Context 被取消时,其下的所有子 Context 以及孙子 Context 都会被级联取消

  • 不可逆性Context 一旦被取消,就无法恢复。

实现原理:

  • cancelCtx 是可取消 Context 的核心实现。它内部包含一个 mutex 来保护其状态。

  • 当创建一个 cancelCtx 时,它会把自己“挂载”到父 Context 的子节点列表中。

  • 当父 Contextcancel() 函数被调用时,它会关闭自己的 done channel,然后递归地调用其所有子节点的 cancel() 函数,从而形成取消信号的级联传播。

4. Context 的使用模式

作为函数的第一参数: Go 社区的最佳实践是将 Context 作为需要控制执行流程(如网络请求、数据库查询)的函数的第一个参数,通常命名为 ctx

func HandleRequest(ctx context.Context, req *http.Request) error {// 启动一个长时间任务go LongRunningTask(ctx)select {case <-time.After(2 * time.Second):fmt.Println("Request handled successfully")return nilcase <-ctx.Done(): // 监听来自上游的取消信号fmt.Println("Request canceled:", ctx.Err())return ctx.Err()}
}

通过这种模式,上游调用者(例如一个 HTTP 服务器)可以在客户端断开连接时,取消 HandleRequestContext,从而优雅地终止所有下游的、不再需要的 goroutine,释放资源。

http://www.dtcms.com/a/452029.html

相关文章:

  • 公司建设网站申请国外有哪些设计网站推荐
  • 网站与微信结合为什么网站建设还要续费
  • 公司网站服务类型怎么填php网站分类目录程序 网址导航程序 织梦二次开发
  • 打开网站自动弹出qqwordpress做多语言
  • 做流量网站有收入吗国外常用的网站开发系统
  • 怎么下载网站的模板云南昆明做网站
  • 江苏建设厅网站首页湖北网站设计制作开发
  • 现在做网站还赚钱吗在线网页制作网站
  • 个人做企业 网站公司网站找哪家
  • 什么查网站是否降权那个相亲网站做的比较好
  • 建设网站制flash xml网站
  • 网站设计知名企业在百度做广告多少钱
  • python网站搭建广州做手机网站建设
  • 音乐网站建设规划书汕头网站建设设计价格
  • 瓷器网站怎么做win2003搭建php网站
  • html5在线网站nas可以做网站吗
  • 北京网站备案在哪污水处理厂网站建设
  • 建网站需什么条件个人免费建站系统
  • 合肥建站推广贴吧推广400一个月
  • 网站开发文案模板icp备案号怎么填写
  • 做视频采集网站犯法网页主题设计思路及制作步骤
  • 看手机的网站做网站获取手机号码
  • 旅游网站开发系统郑州网站建设 云极
  • 公司网站改版要怎么做广告联盟平台排名
  • seo网站建设接单温州网页设计美工招聘
  • app网站开发流程图开发一个网站系统报价
  • 莆田高端网站建设做网站推广托管费用
  • 如何建设网站的管理平台韩国服务器
  • 怎样注册网站帐号申请小程序接入wordpress
  • 广西工程建设质量管理协会网站手机软件开发