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

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

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

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

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

我错过了关于那个特定点的任何文件?


牛魔王的故事
浏览 208回答 1
1回答

跃然一笑

取消上下文只是关闭它的Done通道,它不会“杀死”一个 goroutine 或类似的东西。在上下文中执行的代码select必须注意通道的关闭Done并放弃它正在做的任何工作。但是,在许多情况下,这项工作已经为您完成。如果您用于发出请求的 redis 客户端方法接受一个上下文,那么可以安全地假设如果该上下文被取消,客户端将处理取消并且该方法将立即返回一个错误context.Canceled- 您需要做的就是通过退出您正在做的事情来处理该错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go