class MonitorMixin::ConditionVariable
FIXME: 这在 Nutshell 中没有记录。
由于 MonitorMixin.new_cond 返回一个 ConditionVariable,并且上面的示例调用了 while_wait 和 signal,这个类应该被记录。
Public Instance Methods
Source
# File ext/monitor/lib/monitor.rb, line 139 def broadcast @monitor.mon_check_owner @cond.broadcast end
唤醒所有正在等待此锁的线程。
Source
# File ext/monitor/lib/monitor.rb, line 131 def signal @monitor.mon_check_owner @cond.signal end
唤醒此锁队列中的第一个线程。
Source
# File ext/monitor/lib/monitor.rb, line 105 def wait(timeout = nil) @monitor.mon_check_owner @monitor.wait_for_cond(@cond, timeout) end
释放关联监视器持有的锁并等待;唤醒后重新获取锁。
如果提供了 timeout,则此方法将在 timeout 秒后返回,即使没有其他线程发出信号。
Source
# File ext/monitor/lib/monitor.rb, line 122 def wait_until until yield wait end end
重复调用 wait 直到给定的块产生一个真值。
Source
# File ext/monitor/lib/monitor.rb, line 113 def wait_while while yield wait end end
重复调用 wait 直到给定的块产生一个假值。