goroutine
# goroutine
在函数调用前加 go 会并发执行该函数。启动者仍应负责 goroutine 的退出条件、错误回收和等待,不应创建无法停止的后台任务。
var group sync.WaitGroup
for _, target := range targets {
target := target
group.Add(1)
go func() {
defer group.Done()
check(ctx, target)
}()
}
group.Wait()
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
通过 context.Context 传播取消和截止时间。共享变量需要同步保护,并发测试应运行 go test -race ./...。不要用固定 time.Sleep 猜测任务是否完成。