自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 Golang-Context标准库源码深扒-valueCtx类型

实际上,valueCtx也实现了Context接口,是用来进行值传递的。进行父节点非空判断、键非空判断、key可比较判断,然后进行结构体初始化。本次分享结束,本专栏将持续更新有关golang源码的内容,欢迎大家关注。每个valueVtx仅能携带一个键值对,而且key必须是可以比较的。利用Value函数来进行值的传递,若键存在,则返回值,否则返回nil。只是集成到了Context中。valueCtx通过键值对的方式传递值。valueCtx类型无显式的删除方式。

2025-01-24 19:13:42 433

原创 Golang-Context标准库源码深扒-timerCtx类型

timerCtx类型内部嵌入了一个cancelCtx类型的字段,让其可以实现cancelCtx中的方法,让其可以不用顾虑取消信号的传递的实现与父子节点的处理,可以让timerCtx专注于增加时间点判断功能的实现。timerCtx类型实现了Context的所有接口,并且其内部嵌入了一个cancelCtx类型的字段,让其拥有了cancelCtx类型的特性,并且加入了基于时间点的判断。用于处理时间点过后执行的函数,在timerCtx类型中,其在符合时间点时,会自动执行cancel()函数。删除与父节点的关系;

2025-01-24 18:47:53 894

原创 Golang-Context标准库源码深扒-Context接口与emptyCtx类型

Context接口是整个Context标准库中所有类型都要实现的接口,是Context标准库中所有类型的抽象。其中包含了Deadline() (deadline time.Time, ok bool) 、 Done() <-chan struct{} 、Err() error、Value(key any) any 四个方法。

2025-01-23 11:13:26 885

原创 Golang-Context标准库源码深扒-简介&目录

context包定义了Context类型,用于跨越 API 边界和进程传递截止时间、取消信号以及其他与请求相关的值。服务器接收到的请求应该创建一个Context,而发往服务器的调用应该接受一个Context。在它们之间的函数调用链必须传播Context,并可以选择用WithCancel或WithValue创建的派生Context进行替换。当一个Context被取消时,所有从它派生的Context也会被取消。WithCancel和函数接收一个Context(即父上下文)并返回一个派生的Context。

2025-01-22 23:40:58 1132

原创 Golang-Context标准库源码深扒-cancelCtx类型

在创建一个cancelCtx时,会向上寻找父节点,若找到类型是cancelCtx的父节点,则将自己加入到父节点的children的set中,在propagateCancel()中实现。在删除一个cancelCtx时,直接cancel其children的set中的全部子节点,并且删除其父节点的children的set中的自己,在cancel()中实现。若不能找到类型为cancelCtx的父节点,则启动一个goroutine来监听父节点是否cancel,若cancel,则该context也随之cancel。

2025-01-22 21:05:20 966

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除