多個工人一個接收器

我們想收集多個 Workers 建立的資料。

首先我們建立一個佇列:

sink = Queue.new

然後 16 名工人都生成一個隨機數並將其推入水槽:

(1..16).to_a.map do
  Thread.new do
    sink << rand(1..100)
  end
end.map(&:join)

要獲取資料,請將佇列轉換為陣列:

data = [].tap { |a| a << sink.pop until sink.empty? }