Go 上下文树表示为有向图

示例

通过Go代码构建的简单上下文树(包含一些可能在请求范围内包含并包含在上下文中的公共值),如下所示:

// 伪围棋
ctx := context.WithValue(
    context.WithDeadline(
        context.WithValue(context.Background(), sidKey, sid),
        time.Now().Add(30 * time.Minute),
    ),
    ridKey, rid,
)
trCtx := trace.NewContext(ctx, tr)
logCtx := myRequestLogging.NewContext(ctx, myRequestLogging.NewLogger())

是一棵可以表示为有向图的树,如下所示:

每个子上下文都可以访问其父上下文的值,因此数据访问在树中向上流动(由黑色边缘表示)。另一方面,取消信号沿树传播(如果取消了上下文,则其所有子级也会被取消)。抵消信号流由灰色边缘表示。