goroutine 本地存储
gls === Goroutine 临时存储 ### 重要说明 ### 我有责任提醒你 https://blog.golang.org/context,,这是 Google 如何解决你可能会考虑使用此包的大规模问题的方法。 Google 的方法有一个缺点,即 * 所有 * 函数都必须有一个新的第一个参数,但在克服了这一障碍之后,其他方面都会更好。
有时会在 golang-nuts 上出现一个线程,要求某种 goroutine 本地存储,或者某种 goroutine ID,或者某种上下文。对于 goroutine 本地存储,有几种有效的用例,其中最突出的是日志行上下文。有一个贴子作者希望能够在每个日志行中记录 HTTP 请求上下文 ID,而这些日志行与传入的 HTTP 请求处于同一个 goroutine 中,而无需更改他感兴趣的每个库和函数调用。
这会很有用。如果你能获得某种 goroutine 局部存储,你就可以使用自己的日志写入器来调用 log.SetOutput,该写入器会检查 goroutine 局部存储中是否有上下文信息,并将该上下文添加到日志行中。
所以,是的,这很有道理。这正是语言不支持某个特定且(相对)无用的功能的原因之一,这种功能需要在运行时进行一些更改,仅仅为了提高日志的质量。但是,Go 是否需要在运行时进行更改呢?
暂无开放 Issues,或尚未同步最近议题。