summaryrefslogtreecommitdiffstats
path: root/lib
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
commitc3e13f40cfc664370f635f6be1927fabdda5f1d9 (patch)
tree0d47649ecfe6ecf13fa1397b739f5cca9efbf130 /lib
parente6f7edacea92b39e118a9a82ed7a83b2b428a52b (diff)
downloadruby-c3e13f40cfc664370f635f6be1927fabdda5f1d9.tar.gz
ruby-c3e13f40cfc664370f635f6be1927fabdda5f1d9.tar.xz
ruby-c3e13f40cfc664370f635f6be1927fabdda5f1d9.zip
* lib/thread.rb (ConditionVariable#wait): add timeout argument.
[ruby-talk:346154] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25058 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/thread.rb7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/thread.rb b/lib/thread.rb
index cb6d8c62f..34c2a506d 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