next up previous
Next: 評価 Up: 分散並列実行の実装 Previous: 疑似インターフェイス情報の実装

並列実行制御

メタサーバ からは、並列にディスパッチをかけるので、ディスパッチ間の 同期をとる機構が必要である。 この機構を Java のthread を用いて実現した。各関数実行に対して、 それぞれthreadを割り当てる。また、データ依存関係に応じて 各関数実行間に依存関係をつけ、それぞれ上流のthreadがすべて 終了するのをまって実行が開始されるようにした。

具体的には各thread は上流のthread の数をカウンタとして持つ。 各threadは、自身が終了した時点で下流のthreadにシグナルを送る。 シグナルを受けとったthreadはカウンタをデクリメントし、 カウンタが0になった時点で実行を開始する。

すべての ninf call が終了した後、結果をクライアントへ書き戻す 必要がある。このために書き戻し専用のthread を作成する。 このthread はすべての ninf call を行なう thread の終了を 待って実行される。

6に上記の例の場合のthread の依存関係を示す。

  
図: Thread の依存関係



Hidemoto Nakada
Tue Feb 20 18:17:47 JST 1996