TL;DR

タスクごとに 1 つのプロセスを生成し(fork)、それらのタスクがすべて完了するのを待ってから(join)後続の処理を行う並列処理のモデル。

仕組み

処理をタスクに分け、タスクごとにプロセスを生成して並列に実行する。後続の処理は、すべてのタスクが完了するまで始まらない。最終的な結果を得るためにすべてのタスクの完了を待つ、同期的な処理が前提になる。

注意点

Go の Fan-In pattern や Fan-Out pattern と混同しやすい。Fork-Join model はすべてのタスクの完了を待つ。一方、Fan-In / Fan-Out は非同期に処理を行い、必要に応じて結果を集約できるので、より柔軟に設計できる。

自分の理解

Fan-In / Fan-Out はデザインパターンなので、実現方法がより具体的である。

関連

出典