Go context

2019-05-22  本文已影响0人  xyz098
goroutine要处理的问题?

github练习代码

context doc blog
解决的问题

why:go服务每个进来的请求都有一个goroutine。请求可能是访问数据库或者RPC服务,当请求取消或超时时,所有的goroutine应该快速回收各自使用的资源。

what:context package处理一个请求的 请求作用域值value、取消Done()、超时Deadline()

Go http的请求,每个请求对应一个goroutine处理,此时该处理函数会启动额外的goroutine处理其他数据,如:数据库和rpc服务。

  1. 当子的goroutine访问时需要用到父goroutine数据时,可以用context保存。
  2. 当父goroutine被取消或超时时,所有子goroutine都应该退出,释放资源。可以用context的Done()处理。
代码思路梳理
原文:Go Concurrency patterns:context
翻译:Go语言并发模型:使用 context
简书:如何使用context
上一篇下一篇

猜你喜欢

热点阅读