【頭出し程度にお考えください。間違いがあれば指摘いただきたいです】
タプルスペースを書くための定義がありませんでしたので、以下のようにします。
out(): タプルをタプルスペースに追加する.
in(): タプルスペースからマッチするタプルを削除し,それをプロセスに返す.
必要なタプルが見付からない場合は,プロセスはブロックして待つ.
read(): in と同様だが,読み出されたタプルはタプルスペースから削除されない.
(1)要はキューを作りなさいと言っているので
def queue(d:data)
in(QUEUELEN,i:integer) 末尾のキュー位置を取得し
out(QUEUE,d:i+1) データを追加し
out(QUEUELEN i+1) ずらす
end
def dequeue()
in(CURQUEUE,i) 現在のキュー位置を取得し
in(QUEUE,d:data,i) データを取得して
out(CURQUEUE,i+1) ずらす
return d
def
CURQUEUE QUEUELEN QUEUEは定数、初期設定として、out(QUUEUELEN,0) out(CUEQUEUE,0)が実行されているものとする。
(2)
共有データcomdへのアクセスを考えます。
def lock()
in(FLAG, i:integer)
read(COMD,j:integer)
out(FLAG,1)
end
FLAGは定数。初期設定としてout(FLAG, 1)が実行されているものとする。
FLAGを使用権と考えて、使用権を持っているプロセスが実行出来る。それ以外はinで待つ。
使用権を持つプロセスは実行が終わったらoutで使用権を返上する。ではダメでしょうか。
(3)またプロセスの通信間の方式としてタプルスペース以外になにがありますか?
・クライアントサーバ ソケット
・3層アーキテクチャ ソケット・ファイル
・N層アーキテクチャ ソケット・ファイル
・密結合(クラスター) ソケット・メッセージパッシング
・Peer-to-peer ちょっとわかりません
何れもプレセスの通信間の方式を用いた実装例に見えます。
http://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E9%96%93%E9%80%9A%E4%BF%A1
お礼
ご丁寧にありがとうございます!