Class ConditionVariable
In: lib/rbot/compat19.rb
Parent: Object
ConditionVariable ConditionVariable lib/rbot/compat19.rb MonitorMixin dot/f_26.png

Methods

wait  

Public Instance methods

[Source]

    # 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

[Validate]