このサンプルでは、goroutineとチャネルを使用して、ワーカープールを実装する方法について説明します。 |
|
![]() ![]()
|
|
|
|
ワーカーを以下のように記述します。ワーカーの数個の同時のインスタンスを実行します。これらのワーカーは |
|
|
|
ワーカーのプールを使用するには、ワーカーに作業を送信して、その結果を収集する必要があります。これには2つのチャネルを作成します。 |
|
この時点でワーカーが3つ起動しますが、まだジョブが登録されていないのでブロックされています。 |
|
ここで、5つの |
|
最後に、作業のすべての結果を収集します。これにより、ワーカーgoroutineが終了したことも保証されます。複数のgoroutineを待機する別の方法は、WaitGroupを使用することです。 |
|
プログラムを実行すると、5つのジョブがさまざまなワーカーによって実行されていることがわかります。プログラムでは総計で約5秒の作業が行われますが、3人のワーカーが同時に作業しているので、わずか約2秒しかかかりません。 |
|
|
次のサンプル: WaitGroups。