go - Golang chan & waitgroup 有时要等很久?
问题描述
我是新的golang。我写了一个并行请求代码但有时会发生等待很长时间。你知道什么原因吗?
var wg sync.WaitGroup
guard := make(chan struct{}, 50)
for _, li := range results {
wg.Add(1)
guard <- struct{}{}
go func(){
defer func(){//I'm afraid some panic, so I use defer func, make sure it has done.
wg.Done()
<-guard
}()
//some biz code
//http requests
}()
}
wg.Wait()
我尝试打印进程号,观察者号,总是卡在最后一个进程很长时间。我不知道卡住的原因。可以完成,只是在最后一个过程中卡了很久。
解决方案
推荐阅读
- python - 在这种情况下,我怎样才能最好地解决函数比较 TypeError ?
- python - 是否可以在运行 Jupiter 笔记本时将日志级别设置为 DEBUG?
- javascript - 为 href 链接使用下拉值
- pandas - Pandas 中 Groupby 的索引范围
- latency - 如何计算硬盘的延迟时间?
- javascript - JS Array 属性提取
- javascript - 如何使用 ES6 语法在 node.js 中使用 socket.io
- python - CNN 模型只预测 1 类,并且给出 sigmoid 预测总是 0.99-1
- android - 如何修改应用程序图标和应用程序名称以进行 MDM 分发 - 原生应用程序的品牌重塑
- unit-testing - dotnet test Coverlet 错误覆盖