我需要同时将大量数据从多个 goroutines(比如 30 个)写入文本文件。我要做的是:
workers.Add(core.Concurrency)
for i := 0; i < core.Concurrency; i++ {
go func() {
defer workers.Done()
writer := bufio.NewWriter(f)
defer writer.Flush()
a.Worker(workChan, writer)
}()
}
但这似乎不适用于某些情况。这f
是*os.File
对象。在某些情况下,这根本不会写入文件,在某些情况下,它会写入一些数据,但不会进行未来的写入。行为非常不一致,也没有错误。
任何想法为什么会发生这种情况?