0
点赞
收藏
分享

微信扫一扫

context结束子go程

回望这一段人生 2022-06-20 阅读 25
fmt.Println("main 函数 开始...")
go func() {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
fmt.Println("父 协程 开始...")
go func(ctx context.Context) {
for {
for {
select {
case <-ctx.Done():
fmt.Println("子 协程 接受停止信号...")
return
default:
fmt.Println("子 协程 执行中...")
timer := time.NewTimer(time.Second * 2)
<-timer.C
}
}
}
}(ctx)
time.Sleep(time.Second*5)
fmt.Println("父 协程 退出...")
}()
time.Sleep(time.Second*10)
fmt.Println("main 函数 退出")

执行结果
main 函数 开始…
父 协程 开始…
子 协程 执行中…
子 协程 执行中…
子 协程 执行中…
父 协程 退出…
子 协程 接受停止信号…

main 函数 退出


举报

相关推荐

0 条评论