Go Context源码阅读

Context包

image.png

Context接口

image.png

1.1 emptyContext

type emptyCtx int

Background()

Background返回一个非空的Context。 它永远不会被取消,没有价值,也没有最后期限。 它通常由主要功能,初始化和测试使用,并且用作传入请求的顶级上下文。

image.png

1.2 cancelContext

image.png
image.png

1.3 timerCtx

image.png

timer 来触发 cancelCtx, cancelFunc := context.withCancel(ctx) 的取消函数,实现定时功能

image.png

当ctx2取消时,只会取消ctx2

当ctx1取消时,会去取消ctx1 包括他的children集中存储的所有context

1.4 valueCtx

image.png

给context添加一个键值对信息,就可以通过context来传递数据

例:当父context ctxA存储的key 和子context ctxC存储的key相同时,获取会覆盖父节点value

image.png

因为Value()函数先对比key的类型是否相同,如果都是基本类型,且值相同,会返回当前ctx的值,

使用时,应该包装key,就会查找父ctx的值

image.png

图片截自:B站 eggo实验室

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 11,025评论 0 11
  • 彩排完,天已黑
    刘凯书法阅读 4,570评论 1 3
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 130,931评论 2 7

友情链接更多精彩内容