123456789_123456789_123456789_123456789_123456789_

Class: Queue

Relationships & Source Files
Inherits: Object
Defined in: ext/thread/thread.c,
ext/thread/thread.c

Overview

This class provides a way to synchronize communication between threads.

Example:

require 'thread'
queue = Queue.new

producer = Thread.new do
  5.times do |i|
     sleep rand(i) # simulate expense
     queue << i
     puts "#{i} produced"
  end
end

consumer = Thread.new do
  5.times do |i|
     value = queue.pop
     sleep rand(i/2) # simulate expense
     puts "consumed #{value}"
  end
end

Class Method Summary

  • .new constructor

    Creates a new queue instance.

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new

Creates a new queue instance.

Instance Attribute Details

#empty?Boolean (readonly)

Returns true if the queue is empty.

Instance Method Details

#push(object) #enq(object) #<<(object)
Also known as: #push, #enq

Pushes the given object to the queue.

#clear

Removes all objects from the queue.

#pop(non_block = false) #deq(non_block = false) #shift(non_block = false)
Also known as: #pop, #shift

Retrieves data from the queue.

If the queue is empty, the calling thread is suspended until data is pushed onto the queue. If non_block is true, the thread isn't suspended, and an exception is raised.

#push(object) #enq(object) #<<(object)

Alias for #<<.

#length #size
Also known as: #size

Returns the length of the queue.

#num_waiting

Returns the number of threads waiting on the queue.

#pop(non_block = false) #deq(non_block = false) #shift(non_block = false)

Alias for #deq.

#push(object) #enq(object) #<<(object)

Alias for #<<.

#pop(non_block = false) #deq(non_block = false) #shift(non_block = false)

Alias for #deq.

#length #size

Alias for #length.