From: Tanaka Akira Date: 2010-05-06T20:58:44+09:00 Subject: [ruby-dev:41191] Re: MonitorMixin::ConditionVariable#wait timeout 2010年5月5日16:48 KOSAKI Motohiro : > +1 => ないとまずい > > 一般論としていうと、原因不明でも実装できるのはリトライが安全なケースに限られると思っていて > Cond#waitの場合、Cond#signalされたあともう一回waitすると寝てしまうので > 「できるかぼけ」と壁を叩くケースが出るんじゃないかな たとえ wait が ETIMEDOUT で返って来たとしても、 signal されていないことは保証されないのではないかと思うんですがどうでしょう? wait がタイムアウトで諦めた後、mutex をロックする前に、 他のスレッドにコンテキストスイッチして signal が起こることは無いんでしょうか。 もし有るとすると、ETIMEDOUT でリトライすると、寝てしまって永久に起きない、 という上記で懸念されている状況に結局なり得るのではないかと思うんですが。 -- [田中 哲][たなか あきら][Tanaka Akira]