ジョブシステム
ジョブシステムはキューに登録されたジョブを複数のワーカースレッドで並列処理します。
ループ処理を並列で行う事も出来ます。
ジョブキューを使った処理
まずJobクラスを継承したユーザー独自のジョブクラスを定義します。
そのジョブクラスのインスタンスをキューに登録して行きます。
スレッドごとに固有のデータを使いたいときは固有データを設定しておきます。
全てのジョブを登録したら実行関数を呼びます。
ジョブに登録した関数がユーザー引数付きで呼び出されていきます。
全てのジョブが終わると戻ってきます。
ジョブキューを使う利点は、それぞれのジョブの処理時間が大きく異なっていても空いているワーカースレッドにジョブが割り振られて行くので無駄が無いという事です。
短すぎる処理の場合は同期オブジェクト操作のペナルティが大きくなるため不向きです。
ループ処理
短い定型処理を行うような場合にはそれ用のヘルパーがあります。
内部では通常のジョブシステムを使いますがジョブ数はワーカースレッド数に制限されます。
ワーカースレッドごとに固定間隔でイテレーター増やしながらジョブを呼び出すので同期処理が必要なくなります。
高速に動作しますが処理時間が均一でないループに使うと特定スレッドのみが時間がかかり無駄な待ち時間が発生してしまいます。
描画システム内のマージソートに使用しています。
最終更新:2009年05月23日 19:41