Next: Up: Previous:

潜在的にブロックする逐次手続き呼びだし--Concert Hybrid 実行モデル

説明のために重要でない詳細については変更して, Concert Hybrid 実行モデル [37] におけるlazy context creation 方式の変形を表現したい. Lazy context creation は, callee が終了していなくても caller に制御が戻るかもしれないという条件のもとで, 潜在的にブロックする 手続きがどのように caller に結果の値を渡すのかを定義している. 手続き f が, ブロックするかもしれない手続き g を呼び出したとしよう. g がブロックせずに終了したときには, g は大域フラグ blocked をクリアし, C の return 文によって結果の値を返す . 一方, g がブロックしたときには, g はヒープコンテキストを確保し, フラグをそのコンテキストへのポインタにセットする. 制御が f に戻った後は, フラグを調べ, もしそれがゼロでないならば 自分をブロックさせる. fg の呼び出しの鎖を維持するために, f はブロック前に g のコンテキストを f のコンテキストにリンクさせる (g_ctxt->cont = f_ctxt によって). g が後に再開され, 最終的に終了したら, g は他のコンテキストが g のコンテキストから リンクされていないかどうかを調べ, もしそうならば, それを再開する. 返り値は f のコンテキストの中に書かれる.



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