Go 上下文

本文将推荐 routine 库,它能够在 Go 中提供对上下文的支持。

一、Go 对上下文的支持

在 Java 中,可以通过 ThreadLoacl 存取 “线程变量”,凭借它,每一个线程都可以拥有一个独立的、属于自己的上下文。

具体请看:

并发编程 ThreadLocal

Go 向开发者屏蔽了上下文的概念,包括 routine ID、routine 状态、routine 上下文等。因此,现实中的做法往往是实例化一个 Context 对象,在其中存储上下文,并将其作为函数参数在整个系统中传递。显然,这种做法是极其麻烦、极其不优雅的。

二、routine

go-eden/routine 封装并提供了一些简单、高性能的上下文访问接口,可以通过它更优雅地访问上下文信息。

参考