class Thread::Queue

Thread::Queue 类实现了多生产者、多消费者的队列。它在多线程编程中特别有用,当需要在多个线程之间安全地交换信息时。 Thread::Queue 类实现了所有必需的锁定语义。

该类实现了 FIFO (先进先出) 类型的队列。在 FIFO 队列中,先添加的任务先被检索。

示例

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