2 回答
TA贡献2036条经验 获得超8个赞
因为你正在等待戈鲁丁在你开始后立即完成。试试这个:
for _, data = range MapList {
wg.Add(1)
limit.Execute(func() {
go func(data map[string]string) {
defer wg.Done()
_,_ = m.createVirtualServices(ctx, data, namespace)
}(data)
})
}
wg.Wait() // Wait for them after all goroutines are created
TA贡献1804条经验 获得超7个赞
从我看到的你传递匿名函数到所以你的匿名函数将真正开始新的goroutine,但不是立即,但之后将调用这个匿名函数在内部的某个地方。limit.Executelimit.Execute
但是,您可以传递一个函数,而不是传递N个匿名函数,然后该函数将有趣 N 个戈鲁丁
var data map[string]string
limit.Execute(func() {
for _, data = range MapList {
wg.Add(1)
go func(data map[string]string) {
defer wg.Done()
_,_ = m.createVirtualServices(ctx, data, namespace)
}(data)
}
})
wg.Wait()
- 2 回答
- 0 关注
- 73 浏览
添加回答
举报