ちょっと前に役に立たない patch を投げたりしましたが :-) あの後適当にこ
ねくりまわしてみたらこんなんになりました
<http://www.dm4lab.to/~kjana/ruby/ps.tar.gz>

`PStore.new("/foo/bar")' に対して /foo/bar/{data,lock} ってディレクト
リ構造作って更新トランザクションでは lock を flock した上で,data の方
はテンポラリファイルから rename するっていうかたち.flock するファイル
はすり替えられないから途中で flock が外れることもなかろうと.

さらに thread safe にして,一つのプロセスで同じ path に対する PStore
が一つになるようにしたつもり.

で,作ったから何だっていうと,別にどうというわけでもないんですが :-)
まあせっかくだから公開しようかと.安全にしたつもりで穴が開いてたりはし
そうですが.


これのテストしてる時,1.6.7 on sparc-solaris2.6/i386-cygwin では Mutex 
待ちの Thread がいつのまにか死んでいくという現象が起こりましたが,
1.7.x だと問題無く動くようで,何かがいつの間にか壊れて,知らないうちに
直ったみたいですね....

# ちなみに Thread 使ってるテストで writer の出力の後で reader が更新前
# の値を読み出したりしてるのは仕様です.read transaction と write
# transaction は順序付け可能.矛盾が起きていないのが肝要ということ.


-- 
柳川和久 @ 東大阪市 . 大阪府                               November 9, 2002
絶対に負けない方法を教えてあげよう....戦わないことだ