当前位置: > > > > 如何在函数调用链中使用 context.Context 并取消
来源:stackoverflow
2024-04-24 15:27:36
0浏览
收藏
哈喽!今天心血来潮给大家带来了《如何在函数调用链中使用 context.Context 并取消》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!
问题内容
假设我有这些功能:
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 内部调用。
只需要一个针对这种特定情况的示例。
解决方案
您只需传递与参数相同的上下文,但每当您等待来自通道\远程服务器\任何内容的结果时,您都可以使用 select 语句来等待 <- ctx.Done()。每当上下文被取消(通过取消函数或由于超时)时,内部通道将被关闭,并且接收操作始终在关闭的通道上解除阻塞。
关于取消的一般帖子(没有上下文,但在心里用 ctx.Done() 替换 didCh)
谈论取消(第 15 页的上下文示例)
几个例子
本篇关于《如何在函数调用链中使用 context.Context 并取消》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注公众号!