Class
Class Methods
::
lib/drb/drb.rb
View on GitHub
# File tmp/rubies/ruby-3.0.5/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
No documentation available
Instance Methods
lib/drb/drb.rb
View on GitHub
# File tmp/rubies/ruby-3.0.5/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
No documentation available
#
lib/drb/drb.rb
View on GitHub
# File tmp/rubies/ruby-3.0.5/lib/drb/drb.rb, line 1212
def alive?
@thread.alive?
end
No documentation available
#
lib/drb/drb.rb
View on GitHub
# File tmp/rubies/ruby-3.0.5/lib/drb/drb.rb, line 1216
def kill
@thread.kill
@thread.join
end
No documentation available
lib/drb/drb.rb
View on GitHub
# File tmp/rubies/ruby-3.0.5/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
No documentation available