[#41278] [BUG:1.9] BINARY should not be ASCII-compatible — Yugui <yugui@...>

WXVndWkbJEIkRyQ5ISMbKEIKCgo+IBskQiRHISIkKiQqJGAkTSQzJDMkXiRHJE41RE9AJEclKyVQ

15 messages 2010/05/11

[#41407] [Bug #3339] win32ole test failure — Usaku NAKAMURA <redmine@...>

Bug #3339: win32ole test failure

20 messages 2010/05/25
[#41411] Re: [Bug #3339] win32ole test failure — Masaki Suketa <masaki.suketa@...> 2010/05/25

助田です。

[#41412] Re: [Bug #3339] win32ole test failure — "U.Nakamura" <usa@...> 2010/05/25

こんにちは、なかむら(う)です。

[ruby-dev:41199] Re: MonitorMixin::ConditionVariable#wait timeout

From: Tanaka Akira <akr@...>
Date: 2010-05-06 13:21:25 UTC
List: ruby-dev #41199
2010年5月6日21:50 KOSAKI Motohiro <kosaki.motohiro@gmail.com>:

> 2) タイムアウトとspurious wakeup
>
> 1は今の議論でpredicateを呼び出し側がチェックするはずだから考慮不要という結論になったと
> 思います。2はどうしましょう?今のインターフェースだとCV#waitの戻り値はselfなので、
> 判定不可能ですよね?

タイムアウトは概念的に Thread.new { sleep t; cv.signal } みたいな話とも
考えられるので、タイムアウトというのも predicate の一種で、
wait を呼び出した側が再度検査すべき、かなぁ。

タイムアウトは条件が成立したら、その後に条件が不成立に変化することが無いので、
その再検査を省くことができそうだという点は効率の点で惜しいところですが。

一般的化すると、なんらかの知識により状態が単調に変化することがわかっていれば、
signal されたことがわかるというのは、信用できるのでしょう。

しかし、タイムアウトについては (謎の原因で) spurious wakeup した後、
検査するまでの間にタイムアウトする、という race もあるしなぁ。

再検査を避けるという以外に判定したい理由は有りますかね?
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread