From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2001-03-24T19:19:21+09:00 Subject: [ruby-list:28950] new finalize.rb [Re: finalizer problem] けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :12582 ] the message: "[ruby-dev:12582] finalizer problem ", on Mar/20 15:28(JST) Keiju ISHITSUKA writes: >標準添付ライブラリの finalize.rb が古くなっているので, 更新及び機能拡張 >しているのですが... 標準添付ライブラリの新版finalize.rb(ver 0.8.0)をリリースします. いつもの ように, in.comingにおきましたので, よろしくお願いします. ##-- 主な変更点: * 日本語ドキュメントの追加(多分RDになっているはず). * rubyのfinalizer周りのAPIに対応した. * mix-in module FinalObservableを追加した. * 内部の実装が変った. 依存オブジェクトを直接参照していたのをidで参照するようになった(依存側 オブジェクトがFinalizerに関係なくGCされるようになった). 特徴 ruby builtinのAPIは, そのオブジェクトがGCされたらそのオブジェクトに登録 されているprocを実行するというものです. Finalizerは依存関係を定義し,ある オブジェクトがGCされたら, それに依存しているオブジェクトの特定のメソッド を実行するようになっています. 簡単な使い方. 1) FinalObservable これは, Observableミックスインと似ています. class Foo include FinaliObservable ... end class Bar def initialize foo = Foo.new foo.add_observer(self) end def terminate(id) ... end end bar = Bar.new となっていると, fooが解放されるときに, bar.terminate(id)が呼ばれます. 2) Finalizer foo = Foo.new bar = Bar.new Finalizer.add(foo, bar, :term) となっていると, fooが解放されるときに, bar.term(foo.id)が呼ばれます. その他の機能に関して, 添付のドキュメントを読んでください. __ ..............................石塚 圭樹@日本ラショナルソフトウェア... ----------------------------------->> e-mail: keiju@rational.com <<---