From: Tanaka Akira Date: 2010-05-05T10:53:37+09:00 Subject: [ruby-dev:41157] Re: MonitorMixin::ConditionVariable#wait timeout 2010年5月5日9:32 Yusuke ENDOH : > [Bug #2629] で ::ConditionVariable#wait の API 設計に race condition が > あることがわかりました。 > 秒数ではなく絶対時刻で指定すべき (少なくとも、絶対時刻は受け付けるべき) > ようです。また、timeout で帰ってきたかどうかを返り値として返した方が > よいという指摘もあります。 秒数で指定すべきでない根拠は何でしょう? > 絶対時刻を受け付けるためには thread.c を結構いろいろ変えないといけない > ので、すでに feature freeze 後ということもあり、保守的ですが 1.9.2 では > revert しようと思いますが、いかがでしょうか。 1.9.1 では動かなかったという話はありますが、この秒数でタイムアウトする機能は ずっと昔からあって、動作していたわけです。 長期的な視点からみると、それを禁止するというのは保守的な選択とは いえないように思います。 むしろ、秒数で指定する機能を動くようにしてある現状のほうが保守的でしょう。 それを動かなくして、将来もっといい API に変える、というのは、 長期的な視点からすると非互換性を導入するという話であり、 簡単にうなずける話ではないのではないでしょうか。 さらに、冒頭に述べた疑問につながりますが、私は、 秒数で指定できるという機能は禁止するほど悪いものではないと思っています。 あと、feature freeze 後に feature を削除するのはいいんですか? そうだとすると freeze という感じがしませんが。 -- [田中 哲][たなか あきら][Tanaka Akira]