class Thread::Queue

Die Klasse Thread::Queue implementiert Multi-Producer-, Multi-Consumer-Queues. Sie ist besonders nützlich in der Thread-Programmierung, wenn Informationen sicher zwischen mehreren Threads ausgetauscht werden müssen. Die Klasse Thread::Queue implementiert alle erforderlichen Sperrsemantiken.

Die Klasse implementiert eine FIFO (First-In, First-Out)-Queue. In einer FIFO-Queue werden die zuerst hinzugefügten Aufgaben zuerst abgerufen.

Beispiel

queue = Thread::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

consumer.join