Boss-workerパターン と Producer-consumerパターン
並列処理でよくあるタスクを作成
してタスクを消費
するパターンは、Producer-consumer(生産者と消費者)と呼ばれがちなのですが、
実は、マルチプロセス環境とマルチスレッド環境でパターン名が異なります。
Producer-consumerはマルチスレッド環境で、Boss-worker はマルチプロセス環境を指します。
マルチプロセス環境なBoss-workerでは、WorkerがBossに対してタスクを要求してタスクを受け取る必要がありますが、
マルチスレッド環境なProducer-consumerでは、Consumer は共有キューを参照するだけでいいのです。
ということが http://amzn.to/2qG4oXk に書いていました。
ちなみにRubyのテスト並列実行ライブラリ( https://github.com/tmm1/test-queue ) は、マルチプロセスで実装されており、上記の定義に従うなら Boss-workerパターン となります。
-
category:
- ruby