多数のゴルーチン (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
オブジェクトです。これは、場合によってはファイルにまったく書き込みません。場合によっては、一部のデータを書き込みますが、将来の書き込みは行いません。動作は非常に一貫性がなく、エラーもありません。
なぜこれが起こっているのでしょうか?