所以我用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