一般 context 声明放在哪里合适

讨论 未结 2 31
seers
seers 会员 2022年11月13日 13:16 发表
<p>有一个函数,要并发访问好几个数据库,返回时间不一样,就叫做 longTimeTask()吧,我想用 context 设置超时,现在试下了,context 声明放在 main 里面,就所有 goroutine 共享了,不符合我要求,如果这样是可以的:</p> <pre><code> go func() { ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) defer cancel() longTimeTask(ctx) }() </code></pre> <p>后面我发现这样也行:</p> <pre><code>func longTimeTask(){ ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) defer cancel() } </code></pre> <p>所以想问问哪种最合适</p>
收藏(0)  分享
相关标签: 灌水交流
注意:本文归作者所有,未经作者允许,不得转载
2个回复
  • pennai
    2022年11月13日 16:45
    如果我 CR 的话会觉得第一种好一点,没有那么隐式,因为长任务与超时没有必然联系
    0 0