実行中のゴルーチンでwg.Add(1)/eg.Go()を実行すると,Wait()は呼び出し後に追加されたゴルーチンも待ってくれるか?
Goで並行処理のコードを書いている時に以下の疑問が思い浮かびました.
sync.WaitGroup
を利用する場合,実行中のゴルーチンでwg.Add(1)
を実行すると,wg.Wait()
は呼び出し後に追加されたゴルーチンも待ってくれるか?errgroup.Grpup
を利用する場合,実行中のゴルーチンでeg.Go()
を実行すると,eg.Wait()
は呼び出し後に追加されたゴルーチンも待ってくれるか?
答えはどちらもYesです.
実際のコードで確かめてみました.具体的なコードと結果は下記を参照してください.