fork(1) download
  1. que = Queue.new
  2. arr = (1..10).to_a.shuffle
  3. start = Time.now
  4. sorted = false
  5. m = 0
  6. until sorted do
  7. m += 1
  8. arr.each{ |n| Thread.start{ sleep(n*m/1.0e3); que << n } }
  9. sorted = (1..arr.size).map{ que.pop }.each_cons(2).all?{ |x,y| x <= y }
  10. print "m = #{m}; time(sec) = #{Time.now - start}; sorted? = #{sorted}\n"
  11. end
Success #stdin #stdout 0s 705024KB
stdin
Standard input is empty
stdout
m = 1; time(sec) = 0.010428743; sorted? = true