我从一个线程试图例如在Ruby中下面的代码:睡眠和线程(红宝石)
count = 0
arr = []
10.times do |i|
arr[i] = Thread.new {
sleep(count*10)
Thread.current["mycount"] = count
count += 1
}
end
arr.each {|t| t.join; print t["mycount"], ", " }
puts "count = #{count}"
因为我增加每个线程睡眠,我希望输出是为了1-10 , 但是在几乎所有的运行中,顺序都是随机的。为什么?
如果你想有一个同步的集合,你的问题是不是在你打算实现的目标明确,你可以找到在http上红宝石队列文档中使用Ruby的队列: //yard.ruby-doc.org/stdlib-2.1.0/Queue.html – bjhaid