type=class
superclass=Object
included=MonitorMixin,DRb=DRbUndumped
extended=
dynamically_included=
dynamically_extended=
library=rinda.tuplespace
aliases=
aliasof=

Tuple Space を表すクラスです。

このクラスのインスタンスを
[[lib:drb]] を経由して公開することで
タプルスペースを他のプロセスからアクセスさせることができるようになります。

タプルスペースを drb 経由で利用する側は 
[[m:DRb::DRbObject.new_with_uri]] などでこのオブジェクトのリモートオブジェクトを
取得し、[[c:Rinda::TupleSpaceProxy]] をかぶせることで利用します。

===[a:renewer] タプルの寿命と renewer
タプルを [[m:Rinda::TupleSpace#write]] などで追加するときにその寿命を
秒数で指定することができます。
タプルをタプルスペースに追加してからその秒数過ぎるとタプルは削除されます。

ただし、指定秒数を過ぎてもすぐには削除されず、[[m:Rinda::TupleSpace.new]] の
引数で指定した秒数ごとに「掃除用スレッド」が動き、それによって
cancel されたタプルや期限切れになったタプルが削除されます。

sec には秒数の代わりに renewer を指定することもできます。
これは renew という名前を持つオブジェクトで、上で説明した掃除用スレッドに
よって renew メソッドが呼び出されます。renew が 正の秒数を返した
場合、有効期限がその秒数に更新されます。ただし、renew はタプルの有効期限が
切れていない場合のみ呼び出されます(有効期限切れのタプルは削除されます)。

[[c:Rinda::SimpleRenewer]] はシンプルな renewer で renewer のサンプル実装でも
あります。このクラスはデフォルトで寿命を180秒後に変更します。つまり
このクラスのインスタンスを renewer に指定すると無限に renew され続けるよう
に思われますが、そうではありません。このクラスは 
[[c:DRb::DRbUndumped]] を include しているので、オブジェクトが生成された
プロセスが止まるとそのオブジェクトは無効になります。その時点でrenewの呼び出しに失敗
するようになるので、そこからしばらく(数分)するとそのタプルは有効期限切れとなります。
