我想同时访问 Redis 并在两台机器上执行GET。我将使用我得到的第一个结果并取消另一个呼叫。我想知道的是是否cancelFunc()立即中断 go 函数,或者它是否会在注意到信号之前等待特定事件发生。文档只是说:调用CancelFunc取消子项及其子项,删除父项对子项的引用,并停止任何关联的计时器。这并没有说明它是立即发生还是需要达到特殊的取消点。我错过了关于那个特定点的任何文件?
1 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
取消上下文只是关闭它的Done
通道,它不会“杀死”一个 goroutine 或类似的东西。在上下文中执行的代码select
必须注意通道的关闭Done
并放弃它正在做的任何工作。
但是,在许多情况下,这项工作已经为您完成。如果您用于发出请求的 redis 客户端方法接受一个上下文,那么可以安全地假设如果该上下文被取消,客户端将处理取消并且该方法将立即返回一个错误context.Canceled
- 您需要做的就是通过退出您正在做的事情来处理该错误。
- 1 回答
- 0 关注
- 200 浏览
添加回答
举报
0/150
提交
取消