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

In [ruby-list :03444 ] the message: "[ruby-list:3444] Re: [Q] Thread
", on Jul/25 00:18(JST) matz / netlab.co.jp (Yukihiro Matsumoto) writes:

>|1. 組み込みの関数/メソッドはatomicか?
>
>その保証はありません.

そうなんですくぁ?

そうすると, 同じ資源にアクセスする可能性のある操作は排他制御する必要が
あるってことになるんですか? でも, 同じ資源といってもそのメソッドが何に
アクセスするかあまり明確ではないんですが... 

例えば, eval "class Foo; def foo..." と eval "class Foo; def bar..."
は排他制御する必要があるない? さらに, 

  eval "class Foo; def foo..."

と

  f = Foo.new
  f.bar

はどう?

# きっと内部的には, 同じハッシュ表(メソッドテーブル)をアクセスしている
# と思いますが...

それと, atomicでないとしても, 落ちない保証ぐらいは期待して良いんでしょ
うか? 例えば, 

* 同じHashに同時に書き込んでも問題ないとか...
* stdoutに同時に書き込んでも問題ないとか...

どうなんでしょう...

>|2. ユーザレベルライブラリ(**.rb)のスレッド対応

>|a. 一切対応は行わなくてよい. それを使う側がMutexなどを使って対応する.
>|b. メソッドレベルのatomic性は保証するようにする.
>|c. さらに高レベルな保証を行う. 
>|
>|やはり, bぐらいは対応した方が良いのでは? とは思うのですが...

>thread awareが必要なライブラリもありますが(たとえばtk),基本
>的にはaだと思っています.

なるほど, そんなもんですかねえ... ところで, なぜ tkはthead awareなんで
しょう?

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