From: Shin-ichiro Hara Date: 1997-01-18T15:45:49+09:00 Subject: [ruby-list:1764] thread.rb (Re:ruby 1.0-970118 available) 原です。 新しい thread.rb 使ってみました。うまく動くようです。 Thread.exclusive が廃止になって、スレッドを制御するグロ ーバルな変数 Thread.critical が導入されましたね。 「以前の Thead.exclusive { ... } に相当するのは、 Thread.critical = TRUE ... Thread.critical = FALSE である。"..." を実行中は他のスレッドは停止する。」 と考えていいでしょうか? 実験したところ、次のような性質があるようです。 あるスレッドで Thread.critical = TRUE を設定したのち、 (1)Thread.stop とすると、Thread.critical を FALSE に設定 した後、他のスレッドに制御を移し、自分は停止する。 (2)sleep n, Thread#run または Thread.start のした場合は Thread.critical はそのまま、休んだり他のスレッドを始動して 制御を移す。 もし(1)が正しいとすれば、Mutex と Queue はOKみたいですね。 以前のテストスクリプトはちゃんと動きました。 しかしもっと大きいスクリプトで、相変わらずどう保護しても hash の読み取りが時々うまく行かない。うまいサンプルも作れない。 困った。(;_;)