Golang ( 6 ) - 上下文Context

一、概述

用于协程之间传递上下文信息,包含取消信号、超时信号、传值。

二、基本结构

context包中定义了一个context.Context结构体,可通过两种方式获取:

context.Background()
context.TODO()

支持四种使用方式,使用时需要传入context.Context对象并返回新的Context对象,其中取消、超时会返回一个取消函数。

2.1 WithCancel

取消信号,返回context.Context和取消函数CancelFunc,调用CancelFunc则会终止调用树上协程的执行。

func WithCancel(parent Context) (ctx Context, cancel CancelFunc)

2.2 WithDeadline

超时截止时间,设置具体的截止时间点。

WithDeadline(parent Context, d time.Time) (Context, CancelFunc)

2.3 WithTimeout

超时信号,和WithDeadline的相似,时间点从WithDeadline的具体时间点变为从当前时间开始的相对时间。

func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc)

2.4 WithValue

键值,可以在协程之间进行简单的数据传递。

func WithValue(parent Context, key, val interface{}) Context

三、基础理解


-- EOF --
最后更新于: 2021-09-22 08:31
发表于: 2021-08-28 19:00
标签: Golang