GeekFactory

int128.hatenablog.com

実行中のゴルーチンでwg.Add(1)/eg.Go()を実行すると,Wait()は呼び出し後に追加されたゴルーチンも待ってくれるか?

Goで並行処理のコードを書いている時に以下の疑問が思い浮かびました.

  1. sync.WaitGroupを利用する場合,実行中のゴルーチンでwg.Add(1)を実行すると,wg.Wait()は呼び出し後に追加されたゴルーチンも待ってくれるか?
  2. errgroup.Grpupを利用する場合,実行中のゴルーチンでeg.Go()を実行すると,eg.Wait()は呼び出し後に追加されたゴルーチンも待ってくれるか?

答えはどちらもYesです.

実際のコードで確かめてみました.具体的なコードと結果は下記を参照してください.

github.com