Worker Threadパターン
ワーカーという考え
概要
WorkerThreadパターンとは
- workerというのは「作業者」。ワーカースレッドが仕事を一つずつ取りに行き、処理実施
- 仕事がなかったら、ワーカスレッドはくるまで待つ
- ワーカーは管理者にリクエストを出して、管理者がワーカを管理して仕事を返す
登場人物
Client
- 仕事のリクエストをRequest役として作成し、Channelに送信
Channel
- ClientからRequestを受け取り、Workerに送信
Worker
- ChannelからRequestを取得、その仕事を実行。
- 仕事が終り次第、次のRequest取得
Request
- 仕事を表すモデル。その仕事を実行するのに必要な情報を保持
具体的な効果
仕事効率の向上
- Thread-Per-Messageパターンと違ってWorkerThreadパターンではスレッドを使いまわす
- リサイクルしてスループットを上げる
invocationとexecutionの分離
- メソッドの起動と実行を分離している。
- 起動はinvocation、実行はexecution
- Worker ThreadパターンやThread-Per-Messageパターンは、メソッドのinvocationとexecutionを分離している
効果
- 応答性の向上
executionに時間がかかても、invocationをした方は先に進んでいくことができる
実行順序の制御(スケジューリング)
Request役に優先順位を設け、Channel役がWorker役にRequest役を渡す順番を制御
キャンセル可能・繰り返し実行可能
- invocationしたがexecuionはキャンセル可能
分散処理
- invokeするコンピュータとexecueするスレッド分離