rubyでスレッドを用いて検索範囲を分担する

タイトル通り

#!/usr/bin/ruby
# 1からnまでの数を配列srcにランダムにセット
src=[]
nums=(1..20).to_a
nums.size.times do
  src.push(nums.delete_at(rand(nums.size)))
end
# srcを出力する
p src

a=[]

#一つめのスレッド
a.push Thread.fork{
  sleep rand(3) #スレッドのスタートずらし用
  ret=[]
  src[0..9].each_with_index{|value,index|
    ret.push(["No.1",index,value])  if value >= 6 && value <= 8
  }
  p ret
}

#二つめのスレッド
a.push Thread.fork{
  sleep rand(3) #スレッドのスタートずらし用
  ret=[]
  src[10..19].each_with_index{|value,index|
    ret.push(["No.2",index,value])  if value >= 6 && value <= 8
  }
  p ret
}

a.each{|i| i.join} # 子プロセスをwait

結果

$ ruby thread.rb 
[17, 1, 12, 19, 16, 6, 4, 14, 2, 18, 15, 5, 7, 9, 11, 3, 10, 20, 13, 8]
[["No.2", 2, 7], ["No.2", 9, 8]]
[["No.1", 5, 6]]
$ ruby thread.rb 
[18, 19, 6, 10, 16, 9, 4, 13, 7, 11, 5, 8, 15, 17, 2, 12, 3, 1, 20, 14]
[["No.1", 2, 6], ["No.1", 8, 7]]
[["No.2", 1, 8]]