登录
首页 >  Golang >  Go问答

当调用 cancelFunc() 时,何时(多快)取消 golang 子函数?

来源:stackoverflow

时间:2024-04-12 08:09:33 461浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《当调用 cancelFunc() 时,何时(多快)取消 golang 子函数?》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

我想访问 Redis 并在两台机器上同时执行 GET。。我将使用获得的第一个结果并取消另一个调用。

我想知道 cancelFunc() 是否立即中断 go 函数,或者是否会等待特定事件发生才注意到信号。文档只是说:

调用 CancelFunc 会取消子级及其子级,删除父级对子级的引用,并停止任何关联的计时器。

这并没有说明它是否立即发生或是否需要达到特殊的取消点。

我错过了关于该特定点的任何文档吗?


解决方案


取消上下文只是关闭它的 Done 通道,它不会“杀死”goroutine 或类似的东西。在上下文下执行的代码必须执行 select 来通知 Done 通道的关闭并放弃它正在执行的任何工作。

但是,在许多情况下,这项工作已经为您完成。如果您用来发出请求的 Redis 客户端方法接受上下文,那么可以安全地假设,如果该上下文被取消,客户端将处理取消,并且该方法将立即返回 context.Canceled 错误 - 您所需要的一切要做的就是通过退出正在做的事情来处理该错误。

今天关于《当调用 cancelFunc() 时,何时(多快)取消 golang 子函数?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>