【go】context上下文

Go语言中的Context用于Goroutine间共享状态变量和传递控制信号。当网络请求处理时,多个Goroutine可能需要共享Request信息,并在Request取消或超时时结束相关Goroutine。Context提供了Deadline、Done、Err和Value方法,允许安全地共享数据并控制Goroutine的生命周期。创建Context树时,一般从context.Background开始,通过传递Context实现上层对下层Goroutine的控制。在使用Context时,应遵循避免作为字段、不传nil、仅用于请求数据和监控Done通道等原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Why

很多框架中接口函数第一个参数统一是​ctx context.Context​接口,如net/http中conn.serve(ctx context.Context)方法,为什么要这么设计呢?

因为一般一个网络请求Request,会在多个Goroutine中处理,而这些Goroutine可能需要共享Request的一些信息;同时当Request被取消或者超时的时候,所有从这个Request创建的所有Goroutine也应该被结束。上下文则几乎已经成为传递与请求同生存周期变量的标准方法。

What

​context​用于Goroutine之间共享状态变量,另一个gorutine通过设置ctx变量值,传递过期或撤销信号给被调用的程序单元。

type Context interface {

    Deadline() (deadline time.Time, ok bool)

    Done() <-chan struct{}

    Err() error

    Value(key interface{}) interface{}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值