けいじゅ@日本ラショナルソフトウェアです.

In [ruby-list :06871 ] the message: "[ruby-list:6871] Re: monitor.rb
", on Mar/02 15:47(JST) Shugo Maeda writes:

>前田です。

>|>sync.rbでも同じ問題があると思うんですが...。
>|具体的にどのような問題があったのでしょう?
>
>まつもとさんの[ruby-list:6865]のパッチのとおりです(^^;
>
>begin
>  lock
>  yield
>ensure
>  unlock
>end
>
>のようになっていたのでlockで例外が発生した時にもunlockが
>呼ばれてしまうようになっていました。

いや. その通りなんですが, lockで例外が発生することがあるのかな? と思っ
たのでした.

で, 例外は発生したわけではいんだけども, このコーディングの方が良いって
ことなのかな? と思ったのでした.

ちなみに, 一応thread.rb, mutex_m.rb も同じ問題がありますね(^^;;;

>あと、Sync_m.includable_moduleでNameErrorだけでなくArgumentErrorも
>rescueした方がよいのではないでしょうか。

そうなんですか? 私も全パターンを調べたわけではないので... 
# 当然ソースコードも呼んでいませんが...

>monitor.rbでは特異メソッドにnewが含まれている時はPrimitiveなクラスと
>みなすことにしました。

Primitiveなクラスかどうかが問題なのではなくて, インスタンス変数が作れ
るかが問題だとは思うのですが...

# そのうち, primitiveなクラスでもインスタンス変数が作れるようになるか
# も知れないし(^^;;;

__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju / rational.com <<---