概要
並行処理のパターンであるfan-in、fan-outをGoで実装する。
fan-in/fan-outとは
fan-inは、複数の入力を1つにまとめる処理で、fan-outは、1つの入力を複数に分ける処理である。
fan-inはデータを集約させ、fan-outはデータを分散させる。
Goではchannelとgoroutineを使って実現することができる。
実装
ソースコードはgithubにも置いてある。
fan-outの処理でデータを分散して、fan-inの処理でデータを集約している。
所感
並行処理は自身がないので勉強しないといけない。。。
参考
- ludwig125.hatenablog.com - go言語のpipeline、fan-in、fan-out
- devlights.hatenablog.com - Goメモ-73 (fan-in パターンでデータを集約するチャネル, FanIn)
- devlights.hatenablog.com - Goメモ-79 (指定されたワーカー数でファンアウトさせる関数, FanOut)
- tech-up.hatenablog.com - fan-out、fan-inパターン【Go】
- selfnote.work - [Golang]アルゴリズムにチャレンジ ~ChannelでFan In/Fan Outを実装しよう!~
- go.dev - Go Concurrency Patterns: Pipelines and cancellation
- kapoorrahul.medium.com - Golang Fan-In Fan-Out Concurrency Pattern
- mariocarrion.com - LEARNING GO: FAN-IN/FAN-OUT CONCURRENCY PATTERN
- www.golinuxcloud.com - Go Fan Out Fan In Concurrency Pattern Explained