複数の goroutine の終了を待機するには、wait group を使用できます。 |
|
![]() ![]()
|
|
|
|
各 goroutine で実行する関数は次のとおりです。 |
|
高コストのタスクをシミュレートするためにスリープです。 |
|
|
|
この wait group は、ここで起動したすべての goroutine の終了を待機するために使用します。注: wait group が明示的に関数に渡される場合、ポインターとして渡される必要があります。 |
|
複数の goroutine を起動し、それぞれに対して wait group カウンターを増分します。 |
|
ワーカー呼び出しをクロージャでラップし、このワーカーが完了したことを確実に wait group に通知します。こうすることで、ワーカー自身が実行に関わる並行プリミティブを認識する必要がなくなります。 |
|
WaitGroup カウンターが 0 に戻るまでブロックします。すべてのワーカーが完了したことを通知しています。 |
|
このアプローチではワーカーからエラーを伝達する明確な方法がないことに注意してください。より高度な使用例の場合は、errgroup パッケージの使用を検討してください。 |
|
|
|
ワーカーの起動と終了の順序は、呼び出しごとに異なる可能性があります |
次の例: 速度制限。