Go语言Context模块源码解析

Posted on Sun 30 September 2018 in 源码解析,Go • Tagged with Go

Go的标准库中的Context在日常的工作编码中的使用率很高。这个库是解决Goroutine之间裙带关系的利器,是channel之外的另一个较好的选择。这篇文章将通过源码来了解其实现。 本篇文章是基于1.10.3版本的Go源码, 源码位于src/context

context库有两个interface, Context和canceler:

type Context interface {
  Deadline()(deadline time.Time, ok bool)
  Done() <-chan struct{}
  Err() error
  Value(key interface{})interface{}
}

type canceler interface {
  cancel(removeFromParent bool, err error)
  Done() <-chan struct{}
}

并且为了方便使用,context库提供了如下几个方法来获取Context实例:

func Background() Context
func TODO …

Continue reading