咳といいます。
RindaにLindaのevalを追加したいと思ってます。
(1.8と1.9それぞれに)
Lindaのevalは新しいプロセスを生成して式を評価し、その結
果をタプル
スペースへ投入するものです。
Rindaではブロックをforkしたプロセスで評価してその結果を
タプルとして
投入するインターフェイスにするつもりです。
そこで新しいライブラリを追加するにあたって質問があります。
(1) forkをつかってもよいですか? たぶんWindowsで動
作しません。
(2) ポータブルなテストがかけない気がしますが、なくてもかまい
ませんか?
open3とかどうしてるんだろ。
コードじたいはたぶんこんな↓感じです。
---
require 'drb/drb'
require 'rinda/rinda'
module Rinda
class TupleSpace
def rinda_eval(&blk)
Rinda::rinda_eval(self, &blk)
end
end
class TupleSpaceProxy
def rinda_eval(&blk)
Rinda::rinda_eval(@ts, &blk)
end
end
module_function
def rinda_eval(ts)
ts = DRbObject.new(ts) unless DRbObject === ts
pid = fork do
DRb.stop_service
DRb.start_service('druby://127.0.0.1:0')
place = TupleSpaceProxy.new(ts)
tuple = yield(place)
place.write(tuple)
end
Process.detach(pid)
end
end