ゴルーチン レッスン2
WaitGroup
sync.WaitGroupを使って、複数のゴルーチンの完了を確実に待つ方法を学びます。
WaitGroupの基本
sync.WaitGroup は内部カウンタを持ちます。Add(n) でカウンタを増やし、Done() で1減らし、Wait() でカウンタが0になるまでブロックします。
Goエディタ
deferパターン
defer wg.Done() を関数の先頭に書くのがベストプラクティスです。 パニックが発生しても確実にカウンタが減ります。
Goエディタ
結果の集約
WaitGroupとスライスを組み合わせて、各ゴルーチンの結果を集約できます。 各ゴルーチンが異なるインデックスに書き込む場合、ロックは不要です。
Goエディタ