[PREV] [NEXT] [INDEX]

【4】マルチプロセスについて

J3W内部では各プロセスに実行可能な時間を知らせて呼び出します. 各 プロセスは渡された実行可能時間を消費した時点で実行中の命令の中間状態 を保持したまま,制御を他のプロセス用に明け渡します. 次にプロセスに 制御が渡された場合,保存された中間状態から必要な動作を続行します. すなわち,その命令が終了する場合はプログラムカウンタを進め,時間が足 りなく完全に終了する前に制御を返す場合にはプログラムカウンタを変化さ せず, 前回終了した状態から,実行を再開します.

移動回転など時間を指定するような命令,すなわちMOVx, ROTx, MOVALL, MOVALH, SCALE, NOOP のみが命令実行の途中で,中間状態を保持してプロセ スから抜けます. MOVx, ROTx, NOOP, MOVALL, MOVALH, SCALEはメッセージを受け取ると直ちに 実行を中断して次の命令を実行します.

一方,MOVx, ROTx, NOOP, MOVALL, MOVALH, SCALE以外の命令の実行時間は0 と定義されているため,THROW, WAIT命令で明示的に制御を他のプロセスに与 えない限り,連続する命令は常に連続して実行されることが保証されます. 実行時間0の命令で無限ループを形成すると他のプロセスには制御が渡らな いことになります. この場合J3Wは操作不能となります. また時間のかかる ループ内では,THROWまたはWAIT命令を置いてほかのプロセスに実行するチャ ンスを与える必要があります.

プロセスに与えられる時間は前回プロセスを終了した時間と今回プロセスに 制御を渡す時間の差です. 以下にプロセス内の命令の実行のされ方を示しま す.


ある時間の物体(プロセス)の位置と表示の関係を以下の図に示します.表示のための 計算時間は J3W を実行しているコンピュータの計算速度と描画性能,物体の複雑さに依存 しますが,10-100msec 程度でしょう.

空間内に複数の物体が同時に存在して運動している場合の物体間の距離や位置を求める PRCPOS, DISTNC, RELATV, FINDVXの各命令は位置が確定して既に表示された位置を使います. SETPOSで瞬間的に移動した直後に使用しても移動前の値が使用されます.

一方 RELAT2 は座標を指定して,その座標をローカル座標系に変換する目的で 使用します.そのため一時的に位置をずらしての座標変換を可能にするため,SETPOS で瞬間的に移動した場合でも移動後の値が使用されます.


[PREV] [NEXT] [INDEX]
ご意見・ご感想は,水谷 純 <mizutani.jun@nifty.ne.jp>まで.