ReadQueue is the implementation of an read-only queue that only supports shift and empty? methods. It’s used as a wrapper to encapsulate enumerables in lazy lists.
Creates an ReadQueue object from an enumerable.
# File lib/lazylist/enumerator_queue.rb, line 7 def initialize(enumerable) @enum = enumerable.to_enum @empty = false shift end
Creates an ReadQueue object from an enumerable.
# File lib/lazylist/thread_queue.rb, line 7 def initialize(enumerable) @data = [] @producer = Thread.new do Thread.stop begin enumerable.each do |value| old, Thread.critical = Thread.critical, true begin @data << value @consumer.wakeup Thread.stop ensure Thread.critical = old end end rescue => e @consumer.raise e ensure @consumer.wakeup end end Thread.pass until @producer.stop? end
Returns true if the queue is empty.
# File lib/lazylist/thread_queue.rb, line 44 def empty? if @data.empty? old, Thread.critical = Thread.critical, true begin @consumer = Thread.current @producer.wakeup Thread.stop rescue ThreadError ; ensure @consumer = nil Thread.critical = old end end @data.empty? end
Returns true if the queue is empty.
# File lib/lazylist/enumerator_queue.rb, line 31 def empty? !@next and @empty end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.