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