如何正确停止rpc service?
来源:10-13 编码实战: 改造文件上传service

拧壶冲
2020-10-26
我有注意到启动rpc的service是使用goroutine启动的,按照go的文档中说的,正确停止goroutine十分必要,不然会出现服务器的资源无法正确释放。这是不是也是因为在api的service里面有传 context.TODO?但是我们是在main里面启动的,如果是用context来停止goroutine,是不是应该使用context.background?
写回答
1回答
-
xiaomo
2020-10-29
同学你好,如果资源资源没有合理释放,类似与内存泄漏,可用的资源越来越少,可能会导致系统服务不可用或崩溃。至于context.background,这个作为context的根对象,是不能被取消的呢;如果想要根据context来中止操作,应该用继承于context.background的对象来实现,比如:
rootContext := context.Background() ctx, cancelFunc := context.WithCancel(rootContext) go sumFunc(ctx, cancelFunc)
00
相似问题