所以我用go
来讨论这个问题很多。假设我有一个包含100,000行文本的文本文件。现在我想将所有这些行保存到数据库中。所以我会做这样的事情:限制运行的并发任务数
file, _ := iotuil.ReadFile("file.txt")
fileLines := strings.Split(string(file), "\n")
现在我会遍历文件中的所有行:
for _, l := range fileLines{
saveToDB(l)
}
现在我想运行这个saveToDB
FUNC同时:
var wg sync.WaitGroup
for _, l := range fileLines{
wg.Add(1)
go saveToDB(l, &wg)
}
wg.Wait()
我不知道这是否有问题,但会运行100,000个并发功能。有没有什么办法说嘿嘿跑100个并发功能等所有这些完成再跑100多呢。
for i, _ := range fileLine {
for t = 0; t < 100; t++{
wg.Add(1)
go saveToDB(fileLine[i], &wg)
}
wg.Wait()
}
我需要做这样的事情还是有更清晰的方式去做这件事?还是我运行100,000个并发任务不是问题?
的话题伟大的阅读:http://nesv.github.io/golang/2014/02 /25/worker-queues-in-go.html – Rodrigo