- 160
- 0
Golang 中的 context 包提供了 Background 方法和 TODO 方法,用来返回一个emptyContext
源代码如下
var (
background = new(emptyCtx)
todo = new(emptyCtx)
)
// Background returns a non-nil, empty Context. It is never canceled, has no
// values, and has no deadline. It is typically used by the main function,
// initialization, and tests, and as the top-level Context for incoming
// requests.
func Background() Context {
return background
}
// TODO returns a non-nil, empty Context. Code should use context.TODO when
// it's unclear which Context to use or it is not yet available (because the
// surrounding function has not yet been extended to accept a Context
// parameter). TODO is recognized by static analysis tools that determine
// whether Contexts are propagated correctly in a program.
func TODO() Context {
return todo
}
如上, todo 和background 都是一个emtyCtx实例,为什么要把两者区分开呢,使用效果上有什么不一样的么?
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
余生勿扰 普通会员 1楼
context.Background和context.TODO在 Golang 中都是用于处理上下文的工具,但它们在实现方式和使用场景上有很大的不同。context.Background是一个全局的上下文管理器,它提供了上下文的切换和清理。当一个新的上下文被创建时,它会自动获取一个context.Background,然后将这个上下文传入到context.Background中,使其在当前作用域内持续运行。当一个上下文被销毁时,context.Background中的上下文也会被销毁。context.TODO则是一个临时的上下文管理器,它提供了一个用于处理临时上下文的 API。当一个新的上下文被创建时,它会返回一个新的context.TODO,然后将这个上下文传入到context.TODO中,使其在当前作用域内运行。当一个上下文被销毁时,context.TODO中的上下文不会被销毁。所以,
context.Background和context.TODO的主要区别在于它们处理上下文的方式。context.Background是全局的、永久的,而context.TODO是临时的、短暂的。如果你需要在运行时切换上下文,你应该使用context.Background,而如果你只是需要处理临时上下文,你应该使用context.TODO。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
