01
介绍
在 Golang 语言并发编程中,经常会遇到监控 goroutine 运行结束的场景,通常我们会想到使用 WaitGroup 和 chan + select
,其中 WaitGroup 用于监控一组 goroutine 是否全部运行结束,chan + select
用于监控一个 goroutine 是否运行结束(取消一个 goroutine)。
如果我们需要监控多个 goroutine 是否运行结束(取消多个 goroutine),通常会使用 context,当然使用 context 也可以用于监控一个 goroutine 是否运行结束(取消一个 goroutine)。我们在之前的文章已经介绍过 Golang 语言标准库 Context,未阅读的读者朋友们可以按需翻阅。本文我们主要介绍 Context 的一些使用方式。
02
取消一个 goroutine
使用 context 取消一个 goroutine,比较类似于使用 chan + select
的方式取消一个 goroutine。
示例代码:
func main () {
ctx, cancel := context.WithCancel(context.Background())
go func(ctx context.Context) {
for {
select {
case