[#29911] [Bug #3231] Digest Does Not Build — Charlie Savage <redmine@...>

Bug #3231: Digest Does Not Build

19 messages 2010/05/01

[#29920] [Feature #3232] Loops (while/until) should return last statement value if any, like if/unless — Benoit Daloze <redmine@...>

Feature #3232: Loops (while/until) should return last statement value if any, like if/unless

9 messages 2010/05/01

[#29997] years in Time.utc — Xavier Noria <fxn@...>

Does anyone have a precise statement about the years supported by

13 messages 2010/05/04

[#30010] [Bug #3248] extension 'tk' is finding tclConfig.sh and tkConfig.sh incorrectly — Luis Lavena <redmine@...>

Bug #3248: extension 'tk' is finding tclConfig.sh and tkConfig.sh incorrectly

9 messages 2010/05/05

[#30226] [Bug #3288] Segmentation fault - activesupport-3.0.0.beta3/lib/active_support/callbacks.rb:88 — Szymon Jeż <redmine@...>

Bug #3288: Segmentation fault - activesupport-3.0.0.beta3/lib/active_support/callbacks.rb:88

10 messages 2010/05/13

[#30358] tk doesn't startup well in doze — Roger Pack <rogerdpack2@...>

Currently with 1.9.x and tk 8.5,the following occurs

12 messages 2010/05/22

[ruby-core:30137] [Bug #2629](Rejected) ConditionVariable#wait(mutex, timeout) should return whether the condition was signalled, not the waited time

From: Yusuke Endoh <redmine@...>
Date: 2010-05-10 18:55:04 UTC
List: ruby-core #30137
Issue #2629 has been updated by Yusuke Endoh.

Status changed from Open to Rejected

Hi, Hongli

Even if there is no return value, you can detect the timeout
*without guessing* by the following:

  mutex.synchronize do
    t = Time.now + x
    until @quit
      t2 = Time.now
      cv.wait(mutex, t - t2) if t > t2
      break if @quit
      if Time.now > t
        t += x
        # cleanup code
      end
    end
    # stop the loop
  end

I recommend this code because it is robust against spurious
wakeup.


I think the feature you requested can be used to make the
code more efficient, like the following:

  mutex.synchronize do
    t = Time.now + x
    until @quit
      t2 = Time.now
      timeout = t <= t2 || cv.wait(mutex, t - t2)
      break if @quit  # (A)
      if timeout
        t += x
        # cleanup code
      end
    end
    # stop the loop
  end

But, the feature is not mandatory, and is even prone to misuse
(the check (A) is very easy to forget).

In addition, Tanaka Akira, who has added the timeout feature
to CV#wait, rejected the feature.

Consequently, I close this ticket.  Sorry for decision against
your exception, and also sorry for not deciding sooner.

-- 
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
http://redmine.ruby-lang.org/issues/show/2629

----------------------------------------
http://redmine.ruby-lang.org

In This Thread

Prev Next