Golang的并发控制-Context

使用Context进行并发控制

Context对派生goroutine有较强的控制力,也可以控制多级goroutine,所有很适合处理并发。其可以控制一组呈树壮结构的goroutine,每个goroutine都有相同的Context,常用场景如下:
file

内置的四种Context

context包提供了4个方法创建不同类型的context,使用这四个方法时如果没有父context,都需要传入backgroud,即backgroud作为其父节点:

总结

  • Context仅仅是一个接口定义,根据实现的不同,可以衍生出不同的context类型;
  • cancelCtx实现了Context接口,通过WithCancel()创建cancelCtx实例;
  • timerCtx实现了Context接口,通过WithDeadline()和WithTimeout()创建timerCtx实例;
  • valueCtx实现了Context接口,通过WithValue()创建valueCtx实例;
  • 三种context实例可互为父节点,从而可以组合成不同的应用形式;