实现 go 的 goroutine 本地存储又一种方式
浏览:699次 出处信息
go 本身没有对外提供 goroutine 本地存储,而现实中,又经常需要在上下文中传递一些数据。使用 context 也是一种方式,但是要求在所有需要的地方都要传递,还是非常麻烦,而且有侵入性。
偶然发现 go 已经提供了一个用于 profile 的 pprof label,可以在 goroutine 中携带一些数据。不过这个东西既然是用于 pprof 的,随意往里塞太多东西显然也不适合,还会对 pprof 产生干扰。所以,想办法只用其中一个 label,用一些黑科技把一个 map 放了进去,将影响降到最小。同时,pprof 包中已经有一些基于 context 访问处理 label 的逻辑,所以还要做一些兼容处理,避免被其覆盖。
写了个简单的库:https://github.com/xiezhenye/gls
建议继续学习:
- Go Reflect 性能 (阅读:9964)
- 从Go看,语言设计(一) (阅读:4744)
- Go 语言初步 (阅读:3458)
- go-kit 入门(一) (阅读:3511)
- 为什么我们要使用Go语言以及如何使用它的 (阅读:3082)
- HTML5本地存储初探 (阅读:2917)
- 从Go看,语言设计(二) (阅读:2881)
- HTML5实战之本地存储(1) (阅读:2615)
- HTML5实战之本地存储(3) - 请求同步 (阅读:2449)
- JavaScript本地存储实践(html5的localStorage和ie的userData) (阅读:2252)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:如何迁移一个Git仓库
后一篇:Raft 为什么不能直接 commit 前任的日志? >>
文章信息
- 作者:神仙 来源: 神仙的仙居
- 标签: go goroutine 本地存储
- 发布时间:2021-05-26 22:41:36
建议继续学习
近3天十大热文
- [52] IOS安全–浅谈关于IOS加固的几种方法
- [52] 图书馆的世界纪录
- [51] 如何拿下简短的域名
- [50] android 开发入门
- [49] Go Reflect 性能
- [49] Oracle MTS模式下 进程地址与会话信
- [47] 【社会化设计】自我(self)部分――欢迎区
- [45] 读书笔记-壹百度:百度十年千倍的29条法则
- [37] 程序员技术练级攻略
- [29] 视觉调整-设计师 vs. 逻辑