【发布时间】:2020-02-22 19:44:28
【问题描述】:
所以我经常用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 个并发任务不是问题?
【问题讨论】:
标签: go concurrency