技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 其他 --> 实现 go 的 goroutine 本地存储又一种方式

实现 go 的 goroutine 本地存储又一种方式

浏览:660次  出处信息

go 本身没有对外提供 goroutine 本地存储,而现实中,又经常需要在上下文中传递一些数据。使用 context 也是一种方式,但是要求在所有需要的地方都要传递,还是非常麻烦,而且有侵入性。


偶然发现 go 已经提供了一个用于 profile 的 pprof label,可以在 goroutine 中携带一些数据。不过这个东西既然是用于 pprof 的,随意往里塞太多东西显然也不适合,还会对 pprof 产生干扰。所以,想办法只用其中一个 label,用一些黑科技把一个 map 放了进去,将影响降到最小。同时,pprof 包中已经有一些基于 context 访问处理 label 的逻辑,所以还要做一些兼容处理,避免被其覆盖。


写了个简单的库:https://github.com/xiezhenye/gls


建议继续学习:

  1. Go Reflect 性能    (阅读:9720)
  2. 从Go看,语言设计(一)    (阅读:4720)
  3. Go 语言初步    (阅读:3431)
  4. go-kit 入门(一)    (阅读:3472)
  5. 为什么我们要使用Go语言以及如何使用它的    (阅读:3056)
  6. HTML5本地存储初探    (阅读:2904)
  7. 从Go看,语言设计(二)    (阅读:2860)
  8. HTML5实战之本地存储(1)    (阅读:2600)
  9. HTML5实战之本地存储(3) - 请求同步    (阅读:2431)
  10. JavaScript本地存储实践(html5的localStorage和ie的userData)    (阅读:2239)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1