Spec-Zone.ru › Ruby 3

класс DRb::ThreadObject

Родитель:
Объект
Включенные модули:
MonitorMixin

Публичные методы класса

new(&blk) Показать исходный код
# File lib/drb/drb.rb, line 1201
def initialize(&blk)
  super()
  @wait_ev = new_cond
  @req_ev = new_cond
  @res_ev = new_cond
  @status = :wait
  @req = nil
  @res = nil
  @thread = Thread.new(self, &blk)
end
Вызывает метод родительского класса MonitorMixin::new

Публичные методы экземпляра

_execute() { |req| ... } Показать исходный код
# File lib/drb/drb.rb, line 1236
def _execute()
  synchronize do
    @req_ev.wait_until { @status == :req }
    @res = yield(@req)
    @status = :res
    @res_ev.signal
  end
end
alive?() Показать исходный код
# File lib/drb/drb.rb, line 1212
def alive?
  @thread.alive?
end
kill() Показать исходный код
# File lib/drb/drb.rb, line 1216
def kill
  @thread.kill
  @thread.join
end
method_missing(msg, *arg, &blk) Показать исходный код
# File lib/drb/drb.rb, line 1221
def method_missing(msg, *arg, &blk)
  synchronize do
    @wait_ev.wait_until { @status == :wait }
    @req = [msg] + arg
    @status = :req
    @req_ev.broadcast
    @res_ev.wait_until { @status == :res }
    value = @res
    @req = @res = nil
    @status = :wait
    @wait_ev.broadcast
    return value
  end
end

Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API