原です。
In message "[ruby-list:14812] Re: ConditionVariable (again)"
on 99/06/04, Shugo Maeda <shugo / netlab.co.jp> writes:
|
|前田です。
|おかえりなさいませ。
ありがとうございます。どうもまだしばらく生きていけそうです。
(^_^)
|> Thread.stop で他に制御が移るのは当り前なんですが、そのとき
|> 全く排他制御がなくなってますよね。それが気妙な気がしたんで
|> す。どんな mutex にも lock がかかっていないので、何があって
|> もおかしくない状態なわけです。それでうまく行くのかどうか。
|> 直観的にヤバそうな気がするのですが、、、
|
|ここは任意のスレッドにロックを獲得するチャンスがないといけないの
|で、ロックされてなくても大丈夫なんです。
とにかく任意のスレッドにロックを獲得するチャンスを与える必要が
あるわけですね。だから逆にいうと、大丈夫というよりとても危ない
と言った方が適切かもしれない。:-) 私は最初何か別のものがデッド
ロックの様な致命的なエラーを回避する面倒を見てくれるんじゃない
かとイメージしていました。が、そういうものではなくて、とにかく
条件変数とはこういうものなんですね。
|で、条件が満たされた時に再獲得がなかなかできなくて困るということ
|がないように、再獲得しようとしているスレッドは優先順位の高いキュー
|に入れれられるようになっています。
ああ、これが monitor.rb の手法ですね。致命的、論理的、静的な
問題を扱っているのではなくて、より適切なスケジュールで動くよ
うに調整されているわけか。ちょっと分かりかけてきたぞ。