context 可以用来维护 go 语言协程(跨进程), 提供超时, cancel 回调等当时管理协程, 不过对于 context 的跨 API 边界传递信号不是很理解.

由于协程的创建最终多为树状, context 内部也被树的形式所维护. 当调用 WithCancel(), WithTimeout() 当方法时, 都会返回一个新生成的子 context, 这些初次被生成的 context 都被挂在’名为’ context.Background() 的根上下文上, 根 context 不可被 cancel

以下是一些例子:

其中

WithCancel() 方法, 返回一个子 context 和一个回调函数 cancel(), 当主动触发此函数, 所有依赖于此 context 的协程都可以接收到 Done() 管道消息

另外比如

WithDeadline() 方法, 返回一个子 context 和一个回调函数 cancel(), 和 WithCancel() 一样, 当主动触发 cancel() 函数, 所有依赖于此 context 的协程都可以接收到 Done() 管道消息, 但是如果不主动触发, WithDeadline() 到时间节点时, 会自动触发 cancel(此过程会在协程中完成, 不会阻塞主进程)

Hello world!
文章已创建 212

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部