Next: Up: Previous:

4.2.2 マルチスレッディングがどのように見えるか?

ABCL/f システムにおいて,マルチスレッディングは StackThreads によって実現されており, 各プロセッサはスレッド各々に対してスタックを持つのではなく, 単一のスタック上で複数スレッドが停止/再開されながら実行されている. 我々の方式では各プロセッサ上で gdb を立ち上げ, 単一スタック上に各スレッドに対応するスタックが積み重なって実行されている 様子を眺めることになる.

ABCL/f では,各 スレッド は,その計算が途中でブロック しない限りにおいて,Cの手続き呼び出しを用いて, 単純にスタックを積み上げながら計算を続ける事になる. このため, マルチスレッド に関連する部分以外においては, 挙動が C/C++ の場合と全く同じであるため, gdb を用いてスレッドを自然にトレースする事が出来る.

一方, future, touch, reply, remote future, remote reply, method invoke といった, マルチスレッド に関する箇所に関しては, StackThreads のスケジューリングにそった形で スレッド 実行を追う事になる.以下各々の場合について説明していく.

まずは,future, touch, replyについて, gdb 上での扱いと,内部でのスタック実行の様子を解説する.

また,ABCL/f は並列/分散環境で複数プロセッサを用いて プログラムを並列実行することができるが, remote future や remote reply の際の 内部で起こっている挙動と gdb の対応は以下の通りである.

最後に,並列オブジェクトの振舞について触れる.



Mitsubishi Research Institute,Inc.
Mon Feb 24 19:27:22 JST 1997