module Ractor::Channel::ClassMethods
Public Instance Methods
receive(channel: nil)
click to toggle source
Calls superclass method
# File lib/ractor/channel.rb, line 22 def receive(channel: nil) # rubocop:disable Metrics/MethodLength (https://bugs.ruby-lang.org/issues/17374) if channel == :* SAVED_BY_CHANNEL.each do |_channel, queue| return queue.pop(true) rescue ThreadError # try next channel end super() # # FIXME: Not thread-safe else loop do return SAVED_BY_CHANNEL[channel].pop(true) rescue ThreadError dest_channel, message = super() SAVED_BY_CHANNEL[dest_channel] << message end end end