From: Yusuke ENDOH Date: 2010-05-05T13:22:49+09:00 Subject: [ruby-dev:41160] Re: MonitorMixin::ConditionVariable#wait timeout 遠藤です。 2010年5月5日12:56 Tanaka Akira : > 2010年5月5日11:46 Yusuke ENDOH : >>> 秒数で指定すべきでない根拠は何でしょう? >> >> http://www.opengroup.org/onlinepubs/009695399/functions/pthread_cond_wait.html >> >> で、pthread の RATIONALE として説明されています。 > > Timed Wait Semantics の項ですか? そこと Timed Condition Wait のところです。 ただし正直、その文章を正しく理解できている自信はあまりありません。 > 本当に禁止すべきものなら > たまたま 1.9.1 で動かなかったので、これ幸いと禁止してしまう、というのも > ありうる選択肢かもしれませんが。 > > 問題は本当に禁止すべきものなのか、という点ですね。 使ったら race condition の発生を促進してしまうような API だとしたら、 提供すべきでないと思います。 少なくとも、rdoc で注意と正しい使い方を示すべきだと思います。 絶対時刻が指定できない限り、「正しい使い方」が存在しないと思います。 なので、絶対時刻指定が実装されない限り、1.9.2 で中途半端なものと提供 すべきでないと思います。 絶対時刻指定も new feature なので、今から 1.9.2 に盛り込むべきでない と思いますが、実装する人がいるなら断固反対というほどではありません。 また [Bug #2629] では、timeout でリターンしたかどうかを返り値として 伝えるべきだ、という指摘もあります。これが、 - ないとまずい - なくてもよい - あるとまずい のどれかという判断もいまいちしかねています。こっちはどう思いますか? # 完全に余談ですが、Mutex#locked? もロジック中で使うべきでない要注意 # メソッドだと思っています。 # - http://d.hatena.ne.jp/ku-ma-me/20080111/p1 # - http://d.hatena.ne.jp/ku-ma-me/20080114/p3 -- Yusuke Endoh