view 7.tex @ 7:624a45b40bfe

done.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 28 Mar 2009 13:45:19 +0900
parents
children
line wrap: on
line source

\section{ メタエンジンの実装}

ここでの Linda Server は、Single Thread に実装されており、
Java nio のselect で待ち、通信パケットを受け取って処理する
というメインループを持っている。
メタエンジンは、このメインループを置き換える形で
実装した。つまり、メタエンジン自体が{\tt sync()}
しながらループするという構造を持っている(図\ref{メタエンジン})。

メタエンジンは、Linda serverの立ち上げ時、または、
メタエンジンそのものから、特殊なものに置き換えるAPI
を用意する。

APIは、通常のLindaのAPIだが、メタエンジンでは、
タプルスペースに対して直接アクセスする。

Single Thread Server上のメインループの一部として
実現されているので、タプルスペースをlockすることなく
自由にアクセスすることができる。ここでのLinda API
は{\tt in,rd}で待ち合わせしない仕様になっていて、
待ち合わせは、{\tt sync()}とポーリング、または、
call back によって実現されている。従って、
メインループの一部としても、{\tt in,rd}の待ち合わせ
によってデッドロックするようなことはない。