使用context关闭协程以及协程中的协程
Posted csir
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用context关闭协程以及协程中的协程相关的知识,希望对你有一定的参考价值。
package main
import (
"sync"
"context"
"fmt"
"time"
)
var wg sync.WaitGroup
func worker2(ctx context.Context) {
LOOP:
for {
fmt.Printf("worker2
")
time.Sleep(time.Second)
select {
case <- ctx.Done():
break LOOP
default:
}
}
}
func worker(ctx context.Context) {
go worker2(ctx)
LOOP:
for {
fmt.Printf("worker
")
time.Sleep(time.Second)
select {
case <- ctx.Done():
break LOOP
default:
}
}
wg.Done()
}
func main() {
ctx := context.Background()
ctx, cancel := context.WithCancel(ctx)
wg.Add(1)
go worker(ctx)
//time.Sleep(time.Second*3)
cancel()
wg.Wait()
}
以上是关于使用context关闭协程以及协程中的协程的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin 协程Flow 异步流 ⑤ ( 流的上下文 | 上下文保存 | 查看流发射和收集的协程 | 不能在不同协程中执行流的发射和收集操作 | 修改流发射的协程上下文 | flowOn函数 )
Kotlin 协程Flow 异步流 ⑤ ( 流的上下文 | 上下文保存 | 查看流发射和收集的协程 | 不能在不同协程中执行流的发射和收集操作 | 修改流发射的协程上下文 | flowOn函数 )
Kotlin 协程协程中的多路复用技术 ① ( 多路复用技术 | await 协程多路复用 | Channel 通道多路复用 )