けいじゅ@今はフリー(^^;;です.

FinalizerとMutex_mの新版をリリースします.

Finalizerとは, あるオブジェクトがGCされる時にある依存オブジェクトに対
してメッセージを送る機能です.

Finalizerの使い方:

1. require "finalizer.rb" する.

2. Finalizer.add(obj, dep[, method = :finalize])

オブジェクトobjに対して依存オブジェクトdepとobjがgcされる時に起動され
るメソッドを登録する(起動されるメソッドのデフォルトはfinalize).

これを行うだけです. objがGCされると,

3. dep.method(object_id_of_obj)

依存オブジェクトに対して, objのオブジェクトIDを引数として先ほど登録し
たメソッドをセンドします. 

注意事項:

1. 
あくまでもあるオブジェクトがGCされる時に呼び出されるものであり, そのオ
ブジェクトに対する参照がなくなったからといって呼び出されるとは限りませ
ん.

2.

ただし, 依存オブジェクトは全て登録されているので, プロセス終了時に依存
オブジェクト全てに対してfinalizeすることは可能です.

  Finalizer.safe{Finalizer.finalize_all}

を行うと登録した全てのオブジェクトに対して, finalizeを行います.


Mutex_mの新版について:

1.
Finalizerを用いたサンプルも兼ねています. Mutex_mは静的変数にロック情報
を保存していました. したがって, Mutex_mをextendしたオブジェクトがGCさ
れてもそのロック情報が残ってしまうという問題点がありました. それを,
Finalizerを用いて解決しています.

2.
旧版, Mutex_mはロック情報の保持に全て静的変数を用いていました. 実際に
は, インスタンス変数を持つことができないオブジェクトに対してのみそうす
る必要があって, そうでないオブジェクトに関しては, インスタンス変数でロッ
ク情報を管理することができます.

新版では, そのオブジェクトがインスタンス変数を持てるかどうか判断して, 
実際の実装形態を変更するようにしました. これによって, 上記のFinalizer
を無闇に使わなくても済むようになりました.

PS.
松本氏へ: 
旧版のMutex_mを破棄して新版と入れ替えて下さい.

--ソースここから--
begin 644 fin.tgz
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
/"A0H>+GP'4E#=:L`4```
`
end


__
.........................................石塚 圭樹@今はフリー(^^;;...
------->>また, アドレス変わりました!! e-mail: keiju / bc.mbn.or.jp <<---