Go

並行処理パターン

Worker pool、pipeline、fan-out/fan-in、キャンセル、context、errgroup、セマフォ

24 面接問題·
Mid-Level
1

Goにおけるworker poolとは何ですか?

回答

worker poolは、固定数のgoroutine(worker)を使って共有channelからのタスクを処理する並行処理パターンです。このパターンにより、アクティブなgoroutineの数を制限し、システムリソースの消費を制御できます。タスクごとに1つのgoroutineを作成するのとは異なり、worker poolは一連のworkerを再利用して大量のタスクを効率的に処理します。

2

タスクごとにgoroutineを作成する代わりにworker poolを使う主な利点は何ですか?

回答

アクティブなgoroutineの数を制限することで、システムリソース(メモリとCPU)の消費を制御し、過負荷を回避できます。タスクごとにgoroutineを作成すると、数千から数百万もの同時goroutineが生じ、schedulerを飽和させメモリを枯渇させる可能性があります。worker poolは最適な数のworkerを維持し、タスクを順次処理することで、高負荷下でも予測可能なパフォーマンスを保証します。

3

Goの並行処理の文脈におけるpipelineとは何ですか?

回答

pipelineはchannelで接続された一連のステージであり、各ステージは同じ関数を実行するgoroutineのグループです。各ステージは入力channelを通じてデータを受け取り、処理を行い、出力channelを通じて結果を送信します。このパターンにより、複雑な処理を単純で再利用可能なステージに分解でき、各コンポーネントの合成やテストを独立して行いやすくなります。

4

処理の終了を通知するために、worker poolでchannelを正しく閉じるにはどうすればよいですか?

5

fan-outとfan-inの違いは何ですか?

+21 面接問題

次の面接に向けてGoをマスター

すべての問題、flashcards、技術テスト、コードレビュー演習、面接シミュレーターにアクセス。

無料で始める