golang怎么去除context的deadline


今天小编给大家分享一下golang怎么去除context的deadline的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在使用 context 的时候遇到了开协程处理任务的情况,但是直接在协程里使用主线程的 context 会导致当主线程返回时协程任务也会因为 context cancel 而失败
本文提供了两种办法可以取消掉 context 里的 timeout 和 deadline,再设置一个新的 timeout 上去。最简单的方案是通过创建一个新的 context 来解决这个问题。但是这种方案有一个缺点,当生成一个新的 context 的时候,需要手动把老 context 中的 value 手动拿出来,再设置到新的里面去。 但是在很多情况下,这个 context 是上游传过来的,并不知道 value 里面有哪些具体的 key。或者里面的 value 过多,写起来很麻烦。通过看 context 的源码,其实可以发现 context 是一个 interface,这就给了我们操作的空间。Context 是通过 Deadline() 这个函数控制整个 ctx 是否超时了的。那么我们就可以通过重写这个函数来规避超时。可以通过 DetachDeadline() 方法来将原 ctx 的 deadline 取消掉,或者直接通过 SetNewTimeout 的方法设置一个新的超时时间上去。演示免费云主机域名符合预期。以上就是“golang怎么去除context的deadline”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注百云主机行业资讯频道。

相关推荐: javascript如何实现加减乘除运算

本篇内容主要讲解“javascript如何实现加减乘除运算”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript如何实现加减乘除运算”吧! 实现方法:1、利用“+”、“-”、“*”、“/”、“%”符,可…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 05/26 18:37
Next 05/26 19:37

相关推荐