遠藤です。

2010年5月6日19:39 Tanaka Akira <akr / fsij.org>:
> また、[ruby-dev:41162] で指摘されているように、
> システムの時刻が変わる場合、プログラマの意図が relative time なのに
> absolute time で実装すると、時刻を進める場合は意図よりも早くタイムアウトし、
> 時刻を巻き戻す場合は意図よりも遅くタイムアウトします。
> 早いのは再度待てばいいことですが、遅いのは取り返しがつかないかもしれません。

Mutex.sleep は pthread_cond_timedwait で実装されているため、API 上で
relative time を受け取ってもシステムクロック変更対策は実現できないの
ではないでしょうか。


>> 絶対時刻指定も new feature なので、今から 1.9.2 に盛り込むべきでない
>> と思いますが、実装する人がいるなら断固反対というほどではありません。
>
> とりあえず race は気にしないことで API だけ Time も受け付けるようにするなら
> ConditionVariable#wait の先頭に
>
> ?# xxx: mutex.sleep should support Time argument.
> ?timeout = timeout - Time.now if timeout.kind_of? Time
>
> と入れるとかでしょうか。

えーー。と思いますが、CV#wait に timeout を入れた akr さんは一時的に
thread.rb のメンテナであると考えます。[Bug #2629] の件もあわせて引き
とって頂けるなら、反対しません。

-- 
Yusuke Endoh <mame / tsg.ne.jp>