首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在函数调用链中使用带有取消的context.Context

如何在函数调用链中使用带有取消的context.Context
EN

Stack Overflow用户
提问于 2018-10-26 03:26:23
回答 1查看 592关注 0票数 0

假设我有以下函数:

代码语言:javascript
复制
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内调用。

对于这种特定的情况,我只需要一个例子。

EN

回答 1

Stack Overflow用户

发布于 2018-10-26 04:14:43

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

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52996705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档