父级context定义了context,传入到子级比如funca(){b,cancel:=context.WithTimeout(context.BackGround(),time.Second())cc(b)}funccc(ctxcontext.Context){select{case
2 回答
白猪掌柜的
TA贡献1893条经验 获得超10个赞
context的这个使用,在web编程里比较常见。具体的一个应用:比如存在一个微服务集合,其中对外的一个api接口(假设为A)依赖其他几个微服务(假设为B和C)提供的服务;如果我们调用了A的接口,那么服务A会调用B和C的接口。如果这个时候我们调用A接口的动作终止了(比如我们主动放弃api的调用,但是这个时候A还在继续调用B和C,那么怎么通知A放弃对B和C的调用呢?这个时候context的一些特定就用上了。再描述一个例子:web应用中会使用到数据库,启动web应用的时候会创建数据库的连接池,当我们的web应用退出(重启、升级)时,为了避免数据库连接泄露,应该提前把数据库的连接池释放掉,这个时候也可以通过context来传递信息。
胡说叔叔
TA贡献1804条经验 获得超8个赞
楼上答主描述的已经非常好了,但好像题主是不了解Context该怎么写。之前我翻译过官方的一篇博文,context,如果想看看官方原文,文中有链接,文章中有个案例可以仔细阅读下。另外,如果对Go的并发不够了解,建议看看官方的另一篇文章,我的翻译。context一般主要是用于服务类程序的编写,比如http服务,可以读读类似框架的源码。
添加回答
举报
0/150
提交
取消