如何在上下文中适当缩短截止日期

时间:2018-02-05 16:31:01

标签: go

我知道这不是正确使用上下文包,但我使用的是gopher-lua,我无法找到更好的解决方案。

我正在调用一个带有上下文参数的函数(带有上下文集的lua.NewState),我正在取消上下文。

ctx, cancel := context.WithDeadline(context.Background(), deadline)
defer cancel()
Foo(ctx, parameters)

但在内部的某个地方 Foo 中的另一个子功能 Poo 我需要稍微缩短截止日期。我正在使用:

func Poo(l *lua.LState, timeout time.Duration) {
    ctx, cancel := context.WithTimeout(l.Context(), timeout)
    l.SetContext(ctx)
}

但是,我不确定是否必须从函数 Poo 调用取消功能以避免内存泄漏。在当前代码中,我放弃取消,因为父取消总是被调用并向下传播。去看兽医抱怨放弃取消,但它可能会忽略这一点。

我的想法是否足够好还是我应该找到更好的解决方案?

0 个答案:

没有答案