class MonitorMixin::ConditionVariable
FIXME: Nutshell 中没有对此进行文档说明。
由于 MonitorMixin.new_cond
返回一个 ConditionVariable
,并且上面的示例调用了 while_wait 和 signal,因此应该对这个类进行文档说明。
公共实例方法
broadcast() 点击切换源代码
唤醒所有等待此锁的线程。
# File monitor/lib/monitor.rb, line 139 def broadcast @monitor.mon_check_owner @cond.broadcast end
signal() 点击切换源代码
唤醒等待此锁的队列中的第一个线程。
# File monitor/lib/monitor.rb, line 131 def signal @monitor.mon_check_owner @cond.signal end
wait(timeout = nil) 点击切换源代码
释放关联监视器中持有的锁并等待;在唤醒时重新获取锁。
如果给定了 timeout
,即使没有其他线程发出信号,此方法也会在 timeout
秒过后返回。
# File monitor/lib/monitor.rb, line 105 def wait(timeout = nil) @monitor.mon_check_owner @monitor.wait_for_cond(@cond, timeout) end
wait_until() 点击切换源代码
重复调用 wait,直到给定的代码块产生真值。
# File monitor/lib/monitor.rb, line 122 def wait_until until yield wait end end
wait_while() 点击切换源代码
当给定的代码块产生真值时,重复调用 wait。
# File monitor/lib/monitor.rb, line 113 def wait_while while yield wait end end