[Golang]アルゴリズムにチャレンジ ~ChannelでFan In/Fan Outを実装しよう!~

こんにちは。KOUKIです。

とあるWeb系企業で、Goエンジニアをやっています。

今回は、ChannelでFan In/Fan Outの実装を通じて、アルゴリズムを勉強しましょう。

Fan In/Fan Out

Fan In/Fan Outでは、3つの登場人物が出てきます。

  1. Producer — データを提供する人
  2. Channel(ChA, ChB, ChC) — データを中継する人
  3. Consumer — データを消費する人

Fan In

Fan Inは、複数のキュー(ChA, ChB)を一つのデータ(Chc)にまとめるアルゴリズムです。

図で表すと以下のようになります。

アルゴリズムに直すと、次のようになります。

プログラムを実行してみましょう。

Fan Out

Fan Outは、一つのキュー(ChA)に対して、複数のワーカ(Consumer)がデータを処理をアルゴリズムです。

図で表すと以下のようになります。

アルゴリズムに直すと、次のようになります。

プログラムを実行してみましょう。

おわりに

Channelを使うと面白いコードが書けるようになります。

少し応用のパターンとして、パイプライン処理もおすすめです。

Goroutineは制御が大変ですが、とにかく便利です。

皆さんもぜひチャレンジしてくださいね!

それでは、また!

Go記事まとめ

アルゴリズムまとめ

Go記事をまとめます。

ソースコード

Fan In

Fan Out

コメントを残す