前田です。

In message "[ruby-dev:1532] Re: Mutex#unlock"
Yukihiro Matsumoto <matz / netlab.co.jp> wrote:

||のようにロックを待っているスレッドを全部起こしていますよね?
||全部のスレッドを起こしてもロックを獲得できなかったスレッドは
||どうせまた寝ることになるので、
|
|
|
||でもよいような気がするのですが、これでは問題があるのでしょうか。
|
|いや,参考にしたCMLのスレッドライブラリがこうなっていたとい
|う以上の意味はないです.正直言うと本当に問題があるのかないの
|か判定する能力に自信がないです.

今Javaのスレッド関係をちょっと勉強しているのですが、参考書にロックの
スターベーションを回避するために、獲得要求をキューイングして順番にロ
ックを取得させる例が出ていましたので、キューの先頭だけ起こすだけで問
題ない(というかその方がよい?)のかもしれません。
# ただJavaだとnotifyで誰が起きるかわからないので、その例では全部の
# スレッドを起こして、先頭のスレッド以外また寝させる、という方法を
# 取っていました。

# スレッド関係って問題を見つけるのが大変ですね。

-- 
前田 修吾

P.S. 1.1b8でmutex_m.rbが動かなくなってます:-(

mutex_m.rb:122:in `extend_object': Uninitialized constant Finalizer (NameError)