From: shugo@... (Shugo Maeda) Date: 1998-02-25T01:42:06+09:00 Subject: [ruby-dev:1528] Mutex#unlock 前田です。 Mutex#unlockについてなのですが、 def unlock return unless @locked Thread.critical = TRUE wait = @waiting @waiting = [] @locked = FALSE Thread.critical = FALSE for w in wait w.run end self end のようにロックを待っているスレッドを全部起こしていますよね? 全部のスレッドを起こしてもロックを獲得できなかったスレッドは どうせまた寝ることになるので、 def unlock return unless @locked Thread.critical = TRUE t = @waiting.shift @locked = FALSE Thread.critical = FALSE t.run if t end でもよいような気がするのですが、これでは問題があるのでしょうか。 -- 前田 修吾