< Ruby Programming < Reference < Objects < Thread < Standard Library

Mutex

The Mutex class (loadable via require 'thread') is a way of guaranteeing concurrency for a specific block.

Timing out a wait

You can time out a wait like this in 1.9.2 (or jruby)

require 'thread'
a = Mutex.new
b = ConditionVariable.new
a.synchronize {
 a.wait(b, 3) # timeout after 3 secs
}

In 1.8 non jruby, you can use the timeout library, like

require 'thread'
require 'timeout'
a = Mutex.new
b = ConditionVariable.new

begin
Timeout::timeout(3) {
  a.synchronize {
    a.wait(b)
  }
}
rescue Timeout::Error
 # timed out
end

References

a tutorial

This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.