<GoLearn/>
ゴルーチン レッスン2

WaitGroup

sync.WaitGroupを使って、複数のゴルーチンの完了を確実に待つ方法を学びます。

WaitGroupの基本

sync.WaitGroup は内部カウンタを持ちます。Add(n) でカウンタを増やし、Done() で1減らし、Wait() でカウンタが0になるまでブロックします。

Goエディタ

deferパターン

defer wg.Done() を関数の先頭に書くのがベストプラクティスです。 パニックが発生しても確実にカウンタが減ります。

Goエディタ

結果の集約

WaitGroupとスライスを組み合わせて、各ゴルーチンの結果を集約できます。 各ゴルーチンが異なるインデックスに書き込む場合、ロックは不要です。

Goエディタ