gpt4 book ai didi

go - 如何在函数调用链中使用 context.Context 取消

转载 作者:数据小太阳 更新时间:2023-10-29 03:10:22 27 4
gpt4 key购买 nike

假设我有这些功能:

func A(ctx context.Context) {
// A takes some time to process
}

func B(ctx context.Context) {
// B takes some time to process
}

func C(ctx context.Context) {
// C takes some time to process
}

注意:每个函数调用都需要一些时间来处理。

注意:B 应该在函数 A 中调用 & C 应该在函数 B 中调用。

只需要针对这种特定情况的示例。

最佳答案

您只需传递与参数相同的上下文,但无论何时您等待来自 channel \远程服务器\任何您使用 select 语句等待 <- ctx.Done() 的结果。每当上下文被取消时(通过取消函数或由于超时),内部 channel 将被关闭并且接收操作总是在关闭的 channel 上解除阻塞。

关于取消的一般帖子(没有上下文,但在心理上将 doneCh 替换为 ctx.Done()) https://blog.golang.org/pipelines

谈论取消(第 15 页的上下文示例) https://talks.golang.org/2014/gotham-context.slide#15

几个例子 https://www.sohamkamani.com/blog/golang/2018-06-17-golang-using-context-cancellation/

关于go - 如何在函数调用链中使用 context.Context 取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52996705/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com