我知道这不是正确使用上下文包,但我使用的是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 调用取消功能以避免内存泄漏。在当前代码中,我放弃取消,因为父取消总是被调用并向下传播。去看兽医抱怨放弃取消,但它可能会忽略这一点。
我的想法是否足够好还是我应该找到更好的解决方案?