| Class | ConditionVariable |
| In: |
lib/rbot/compat19.rb
|
| Parent: | Object |
# File lib/rbot/compat19.rb, line 11
11: def wait(mutex, timeout=nil)
12: begin
13: # TODO: mutex should not be used
14: @waiters_mutex.synchronize do
15: @waiters.push(Thread.current)
16: end
17: if timeout
18: elapsed = mutex.sleep timeout if timeout > 0.0
19: unless timeout > 0.0 and elapsed < timeout
20: t = @waiters_mutex.synchronize { @waiters.delete Thread.current }
21: signal unless t # if we got notified, pass it along
22: raise TimeoutError, "wait timed out"
23: end
24: else
25: mutex.sleep
26: end
27: end
28: nil
29: end