Ruby 2.4参考手册
监控 | Monitor
MonitorMixin::ConditionVariable
Parent:Object
FIXME:这在Nutshell中没有记录。
由于MonitorMixin#new_cond返回一个ConditionVariable,上面的例子调用while_wait和signal,所以这个类应该被记录下来。
公共类方法
new(monitor) Show source
# File lib/monitor.rb, line 153
def initialize(monitor)
@monitor = monitor
@cond = Thread::ConditionVariable.new
end
公共实例方法
broadcast() Show source
唤醒等待这个锁的所有线程。
# File lib/monitor.rb, line 146
def broadcast
@monitor.__send__(:mon_check_owner)
@cond.broadcast
end
signal() Show source
唤醒第一个线程等待这个锁。
# File lib/monitor.rb, line 138
def signal
@monitor.__send__(:mon_check_owner)
@cond.signal
end
wait(timeout = nil) Show source
释放关联监视器中的锁并等待; 重新获得唤醒时的锁定。
如果timeout
给出,timeout
即使没有其他线程不发送信号,该方法在秒数后返回。
# File lib/monitor.rb, line 106
def wait(timeout = nil)
@monitor.__send__(:mon_check_owner)
count = @monitor.__send__(:mon_exit_for_cond)
begin
@cond.wait(@monitor.instance_variable_get(:@mon_mutex), timeout)
return true
ensure
@monitor.__send__(:mon_enter_for_cond, count)
end
end
wait_until() Show source
调用等待,直到给定的块产生真值。
# File lib/monitor.rb, line 129
def wait_until
until yield
wait
end
end
wait_while() Show source
呼叫等待重复,而给定的块产生真值。
# File lib/monitor.rb, line 120
def wait_while
while yield
wait
end
end
监控 | Monitor相关
Ruby 是一种面向对象、命令式、函数式、动态的通用编程语言,是世界上最优美而巧妙的语言。
主页 | https://www.ruby-lang.org/ |
源码 | https://github.com/ruby/ruby |
版本 | 2.4 |
发布版本 | 2.4.1 |