summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-09-23 14:01:07 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-09-23 14:01:07 +0000
commit7728a17a27f9b9eeac9bc2ec04e54dd6fd3b3160 (patch)
tree0d47649ecfe6ecf13fa1397b739f5cca9efbf130
parent8c3926aea0d782d28fc42ca8d391ce7ec9533e31 (diff)
* lib/thread.rb (ConditionVariable#wait): add timeout argument.
[ruby-talk:346154] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25058 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--NEWS4
-rw-r--r--lib/thread.rb7
3 files changed, 14 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index a0ec66fc21..1cbedd5ce3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Sep 23 22:58:57 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/thread.rb (ConditionVariable#wait): add timeout argument.
+ [ruby-talk:346154]
+
Wed Sep 23 21:25:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/bigdecimal/lib/bigdecimal/math.rb (atan): refined.
diff --git a/NEWS b/NEWS
index a384402980..3adf36ec6e 100644
--- a/NEWS
+++ b/NEWS
@@ -230,6 +230,10 @@ with all sufficient information, see the ChangeLog file.
* incompatible changes:
* Time.parse raises ArgumentError when no date information.
+* thread
+ * extended method:
+ * ConditionVariable#wait takes timeout argument.
+
* securerandom
* new methods:
* SecureRandom.urlsafe_base64
diff --git a/lib/thread.rb b/lib/thread.rb
index cb6d8c62fc..34c2a506d2 100644
--- a/lib/thread.rb
+++ b/lib/thread.rb
@@ -59,13 +59,16 @@ class ConditionVariable
#
# Releases the lock held in +mutex+ and waits; reacquires the lock on wakeup.
#
- def wait(mutex)
+ # If +timeout+ is given, this method returns after +timeout+ seconds passed,
+ # even if no other thread doesn't signal.
+ #
+ def wait(mutex, timeout=nil)
begin
# TODO: mutex should not be used
@waiters_mutex.synchronize do
@waiters.push(Thread.current)
end
- mutex.sleep
+ mutex.sleep timeout
end
end